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]
3import 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.
findall | Trả về một list các kết quả phù hợp |
search | Trả về một 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
search | Trả về một 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ỗng | 2. 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ố 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ố 9: | Metacharacters | Metacharacters 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$"
search | Trả về một 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ỗng | 2. 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ỗng | 2. 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ố 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ố 9: | Metacharacters | Metacharacters 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"
^ | 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]
1Hoặc
import re
txt = "The rain in Spain"
x = re.search["^The.*Spain$", txt]
2"a|b"
"a"