Hướng dẫn python parse string regex - python phân tích cú pháp chuỗi regex

RegEx hay biểu thức chính quy (Regular Expression) là một chuỗi ký tự tạo thành một biểu mẫu tìm kiếm (search pattern). RegEx được sử dụng để kiểm tra xem một chuỗi có chưa mẫu tìm kiêms được chỉ định hay không.

RegEx module

Trong python, có một gói tích hợp có tên

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
3 có khả năng sử dụng để làm việc với biểu thức chính quy. Để import module
import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
3

import re

RegEx trong python

Sau khi import module

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
3 thì chúng ta có thể sử dụng biểu thức chính quy. Ví dụ: Tìm kiễm chuỗi bắt đầu bằng 'The' và kết thúc bằng 'Spain':

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)

Các hàm xử lý RegEx

Module

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
3 cung cấp cho chúng ta các hàm tìm kiếm một chuỗi phù hợp với biểu thức.

HàmMô tả
findall Trả về một list các kết quả phù hợp
search Trả về một
import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
7 object nếu có bất kỳ vị trị nào trong chuỗi phù hợp
split Trả về một list chuỗi đã được phân chia ở vị trí match
sub Thay thế các vị trí match với biểu thức bằng một chuỗi khác

1. Hàm findall()

In ra tất cả những đoạn phù hợp:

In [11]: import re 
    ...:  
    ...: str = "The rain in Spain" 
    ...: x = re.findall("ai", str) 
    ...: print(x)                                                                                                  
['ai', 'ai']

Hoặc nếu không tìm thấy kết quả nào phù hợp thì trả về một danh sách rỗng

In [12]: import re 
    ...:  
    ...: str = "The rain in Spain" 
    ...: x = re.findall("Portugal", str) 
    ...: print(x)                                                                                                  
[]

2. Hàm search()

Tìm kiếm khoảng trắng đầu tiên trong chuỗi:

In [13]: import re 
    ...:  
    ...: str = "The rain in Spain" 
    ...: x = re.search("\s", str) 
    ...:  
    ...: print("The first white-space character is located in position:", x.start())                               
The first white-space character is located in position: 3

Hoặc sẽ trả về None nếu không tìm thấy

In [15]: import re 
    ...:  
    ...: str = "The rain in Spain" 
    ...: x = re.search("\d", str) 
    ...:  
    ...: print(x)                                                                                                  
None

3. Hàm split()

Tách các từ trong câu:

In [16]: import re 
    ...:  
    ...: str = "The rain in Spain" 
    ...: x = re.split("\s", str) 
    ...: print(x)                                                                                                  
['The', 'rain', 'in', 'Spain']

Chúng ta có thể chỉ định số lần xuất hiện qua tham số

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
8. Ví dụ tách chuỗi ở lần xuất hiện đầu tiên của khoảng trắng:

In [17]: import re 
    ...:  
    ...: str = "The rain in Spain" 
    ...: x = re.split("\s", str, 1) 
    ...: print(x)                                                                                                  
['The', 'rain in Spain']

4. Hàm sub()

Thay thế mọi khoảng trắng bằng số 9:

In [18]: import re 
    ...:  
    ...: str = "The rain in Spain" 
    ...: x = re.sub("\s", "9", str) 
    ...: print(x)                                                                                                  
The9rain9in9Spain

Hoặc có thể hạn chế số lần thay thế qua tham số

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
9:

In [19]: import re 
    ...:  
    ...: str = "The rain in Spain" 
    ...: x = re.sub("\s", "9", str, 2) 
    ...: print(x)                                                                                                  
The9rain9in Spain

Metacharacters

Metacharacters là những ký tự có ý nghĩa đặc biệt

Ký tựMô tảfindall Trả về một list các kết quả phù hợp
search Trả về một
import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
7 object nếu có bất kỳ vị trị nào trong chuỗi phù hợp
split Trả về một list chuỗi đã được phân chia ở vị trí match
sub Thay thế các vị trí match với biểu thức bằng một chuỗi khác 1. Hàm findall()In ra tất cả những đoạn phù hợp:
Hoặc nếu không tìm thấy kết quả nào phù hợp thì trả về một danh sách rỗng2. Hàm search()Tìm kiếm khoảng trắng đầu tiên trong chuỗi:Hoặc sẽ trả về None nếu không tìm thấy
3. Hàm split()Tách các từ trong câu:Chúng ta có thể chỉ định số lần xuất hiện qua tham số
import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
8. Ví dụ tách chuỗi ở lần xuất hiện đầu tiên của khoảng trắng:
4. Hàm sub()
Thay thế mọi khoảng trắng bằng số 9:Hoặc có thể hạn chế số lần thay thế qua tham số
import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
9:
MetacharactersMetacharacters là những ký tự có ý nghĩa đặc biệt
Ký tựVí dụChuỗi phù hợp[]
Một tập hợp các ký tự "[a-e]" "adbc" \
Tín hiệu thể hiện một chuỗi đặc biệt (hoặc sử dụng để thoát các ký tự đặc biệt) "\d" "123" .
Bất kỳ ký tự nào (ngoại trừ ký tự dòng mới) "he..o" "henno" ^
Bắt đầu chuỗi "^hello" "hello gua" $

Kết thúc chuỗi

"world$"

Ký tựMô tảfindall Trả về một list các kết quả phù hợp
search Trả về một
import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
7 object nếu có bất kỳ vị trị nào trong chuỗi phù hợp
split Trả về một list chuỗi đã được phân chia ở vị trí match
sub Thay thế các vị trí match với biểu thức bằng một chuỗi khác 1. Hàm findall()
r"ain\b"
In ra tất cả những đoạn phù hợp:
"He is Bi Rain"
Hoặc nếu không tìm thấy kết quả nào phù hợp thì trả về một danh sách rỗng2. Hàm search()Tìm kiếm khoảng trắng đầu tiên trong chuỗi:
r"ain\B"
Hoặc sẽ trả về None nếu không tìm thấy
"No words are rains"
3. Hàm split()Tách các từ trong câu:1. Hàm findall()In ra tất cả những đoạn phù hợp:
Hoặc nếu không tìm thấy kết quả nào phù hợp thì trả về một danh sách rỗng2. Hàm search()Tìm kiếm khoảng trắng đầu tiên trong chuỗi:Hoặc sẽ trả về None nếu không tìm thấy
3. Hàm split()Tách các từ trong câu:Chúng ta có thể chỉ định số lần xuất hiện qua tham số
import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
8. Ví dụ tách chuỗi ở lần xuất hiện đầu tiên của khoảng trắng:
4. Hàm sub()
Thay thế mọi khoảng trắng bằng số 9:Hoặc có thể hạn chế số lần thay thế qua tham số
import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
9:
MetacharactersMetacharacters là những ký tự có ý nghĩa đặc biệt
Ký tựVí dụChuỗi phù hợp[]
Một tập hợp các ký tự "[a-e]" "adbc" \
Tín hiệu thể hiện một chuỗi đặc biệt (hoặc sử dụng để thoát các ký tự đặc biệt) "\d" "123" .

Bất kỳ ký tự nào (ngoại trừ ký tự dòng mới)

"he..o"

"henno" Mô tả
^ Bắt đầu chuỗi
"^hello" "hello gua"
$ Kết thúc chuỗi
"world$" "helo world"
* Không hoặc nhiều lần xuất hiện
"aix*" "ai"
+ Xuất hiện ít nhất một lần
"aix+" "aixxxx"

{}

Chính xác số lần xuất hiện

"aix{2}"

"aixx"

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
0

|

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
1

Hoặc

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
2

"a|b"

"a"