Python RegEx
RegEx, hoặc Biểu thức chính quy, là một chuỗi các ký tự tạo thành một mẫu tìm kiếm.
RegEx có thể được sử dụng để kiểm tra xem một chuỗi có chứa mẫu tìm kiếm được chỉ định hay không.
Mô-đun RegEx
Python có một gói tích hợp được gọi là re
, có thể được sử dụng để làm việc với Biểu thức chính quy.
Nhập re
mô-đun:
import re
RegEx bằng Python
Khi bạn đã nhập re
mô-đun, bạn có thể bắt đầu sử dụng biểu thức chính quy:
Thí dụ
Tìm kiếm chuỗi để xem liệu nó có bắt đầu bằng "The" và kết thúc bằng "Spain" hay không:
import
re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
Các chức năng của RegEx
Mô re
-đun cung cấp một tập hợp các chức năng cho phép chúng tôi tìm kiếm một chuỗi cho một kết quả phù hợp:
Function | Description |
---|---|
findall | Returns a list containing all matches |
search | Returns a Match object if there is a match anywhere in the string |
split | Returns a list where the string has been split at each match |
sub | Replaces one or many matches with a string |
Metacharacters
Metacharacters là những ký tự có ý nghĩa đặc biệt:
Character | Description | Example | Try it |
---|---|---|---|
[] | A set of characters | "[a-m]" | |
\ | Signals a special sequence (can also be used to escape special characters) | "\d" | |
. | Any character (except newline character) | "he..o" | |
^ | Starts with | "^hello" | |
$ | Ends with | "planet$" | |
* | Zero or more occurrences | "he.*o" | |
+ | One or more occurrences | "he.+o" | |
? | Zero or one occurrences | "he.?o" | |
{} | Exactly the specified number of occurrences | "he{2}o" | |
| | Either or | "falls|stays" | |
() | Capture and group |
Chuỗi đặc biệt
Một chuỗi đặc biệt được \
theo sau bởi một trong các ký tự trong danh sách dưới đây và có ý nghĩa đặc biệt:
Character | Description | Example | Try it |
---|---|---|---|
\A | Returns a match if the specified characters are at the beginning of the string | "\AThe" | |
\b | Returns a match where the specified characters are at the beginning or at the
end of a word (the "r" in the beginning is making sure that the string is being treated as a "raw string") |
r"\bain" r"ain\b" |
|
\B | Returns a match where the specified characters are present, but NOT at the beginning
(or at
the end) of a word (the "r" in the beginning is making sure that the string is being treated as a "raw string") |
r"\Bain" r"ain\B" |
|
\d | Returns a match where the string contains digits (numbers from 0-9) | "\d" | |
\D | Returns a match where the string DOES NOT contain digits | "\D" | |
\s | Returns a match where the string contains a white space character | "\s" | |
\S | Returns a match where the string DOES NOT contain a white space character | "\S" | |
\w | Returns a match where the string contains any word characters (characters from a to Z, digits from 0-9, and the underscore _ character) | "\w" | |
\W | Returns a match where the string DOES NOT contain any word characters | "\W" | |
\Z | Returns a match if the specified characters are at the end of the string | "Spain\Z" |
Bộ
Tập hợp là một tập hợp các ký tự bên trong một cặp dấu ngoặc vuông
[]
có ý nghĩa đặc biệt:
Set | Description | Try it |
---|---|---|
[arn] | Returns a match where one of the specified characters (a ,
r , or n ) are
present |
|
[a-n] | Returns a match for any lower case character, alphabetically between
a and n |
|
[^arn] | Returns a match for any character EXCEPT a ,
r , and n |
|
[0123] | Returns a match where any of the specified digits (0 ,
1 , 2 , or
3 ) are
present |
|
[0-9] | Returns a match for any digit between
0 and 9 |
|
[0-5][0-9] | Returns a match for any two-digit numbers from 00 and
59 |
|
[a-zA-Z] | Returns a match for any character alphabetically between
a and z , lower case OR upper case |
|
[+] | In sets, + , * ,
. , | ,
() , $ ,{}
has no special meaning, so [+] means: return a match for any
+ character in the string |
Hàm findall ()
Hàm findall()
trả về một danh sách chứa tất cả các kết quả phù hợp.
Thí dụ
In danh sách tất cả các kết quả phù hợp:
import re
txt = "The rain in Spain"
x = re.findall("ai",
txt)
print(x)
Danh sách chứa các kết quả phù hợp theo thứ tự chúng được tìm thấy.
Nếu không tìm thấy kết quả phù hợp nào, một danh sách trống sẽ được trả về:
Thí dụ
Trả lại danh sách trống nếu không tìm thấy kết quả phù hợp:
import re
txt = "The rain in Spain"
x = re.findall("Portugal",
txt)
print(x)
Hàm search ()
Hàm search()
tìm kiếm chuỗi để tìm một kết quả phù hợp và trả về một đối tượng Match nếu có một kết quả phù hợp.
Nếu có nhiều hơn một trận đấu, chỉ lần xuất hiện đầu tiên của trận đấu sẽ được trả về:
Thí dụ
Tìm kiếm ký tự khoảng trắng đầu tiên trong chuỗi:
import re
txt = "The rain in Spain"
x = re.search("\s",
txt)
print("The first white-space character is located in
position:", x.start())
Nếu không tìm thấy kết quả phù hợp nào, giá trị None
được trả về:
Thí dụ
Thực hiện một tìm kiếm không trả về kết quả phù hợp nào:
import re
txt = "The rain in Spain"
x = re.search("Portugal",
txt)
print(x)
Hàm split ()
Hàm split()
trả về một danh sách trong đó chuỗi đã được tách ở mỗi trận đấu:
Thí dụ
Tách ở mỗi ký tự khoảng trắng:
import re
txt = "The rain in Spain"
x = re.split("\s",
txt)
print(x)
Bạn có thể kiểm soát số lần xuất hiện bằng cách chỉ định
maxsplit
tham số:
Thí dụ
Chỉ tách chuỗi ở lần xuất hiện đầu tiên:
import re
txt = "The rain in Spain"
x = re.split("\s",
txt,
1)
print(x)
Hàm sub ()
Hàm sub()
thay thế các kết quả phù hợp bằng văn bản bạn chọn:
Thí dụ
Thay thế mọi ký tự khoảng trắng bằng số 9:
import re
txt = "The rain in Spain"
x = re.sub("\s",
"9", txt)
print(x)
Bạn có thể kiểm soát số lượng thay thế bằng cách chỉ định
count
tham số:
Thí dụ
Thay thế 2 lần xuất hiện đầu tiên:
import re
txt = "The rain in Spain"
x = re.sub("\s",
"9", txt, 2)
print(x)
Đối tượng phù hợp
Đối tượng Đối sánh là một đối tượng chứa thông tin về tìm kiếm và kết quả.
Lưu ý: Nếu không có kết quả phù hợp, giá trị None
sẽ được trả về, thay vì Đối tượng phù hợp.
Thí dụ
Thực hiện tìm kiếm sẽ trả về Đối tượng phù hợp:
import re
txt = "The rain in Spain"
x = re.search("ai",
txt)
print(x) #this will print an object
Đối tượng Match có các thuộc tính và phương thức được sử dụng để truy xuất thông tin về tìm kiếm và kết quả:
.span()
trả về một bộ giá trị chứa các vị trí bắt đầu và kết thúc của trận đấu.
.string
trả về chuỗi được truyền vào hàm
.group()
trả về phần của chuỗi đã có khớp
Thí dụ
In vị trí (vị trí bắt đầu và kết thúc) của lần xuất hiện đối sánh đầu tiên.
Biểu thức chính quy tìm kiếm bất kỳ từ nào bắt đầu bằng chữ hoa "S":
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.span())
Thí dụ
In chuỗi được truyền vào hàm:
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.string)
Thí dụ
In phần của chuỗi có khớp.
Biểu thức chính quy tìm kiếm bất kỳ từ nào bắt đầu bằng chữ hoa "S":
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.group())
Lưu ý: Nếu không có kết quả phù hợp, giá trị None
sẽ được trả về, thay vì Đối tượng phù hợp.