Python RegEx
RegEx hay Biểu thức chính quy là một chuỗi ký tự tạo thành 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 đã chỉ định hay không.
Mô-đun RegEx
Python có gói dựng sẵn có tên re
, có thể được sử dụng để hoạt động với Biểu thức chính quy.
Nhập mô-đun re
:
import re
RegEx trong Python
Khi bạn đã nhập mô-đun re
, bạn có thể bắt đầu sử dụng các biểu thức thông thường:
Ví dụ
Tìm kiếm chuỗi để xem 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)
Hãy tự mình thử »Hàm RegEx
Mô-đun re
cung cấp một tập hợp các hàm cho phép chúng ta tìm kiếm một chuỗi 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 |
Siêu ký tự
Siêu ký tự là những ký tự có ý nghĩa đặc biệt:
Character | Description | Example | Try it |
---|---|---|---|
[] | A set of characters | "[a-m]" | Try it » |
\ | Signals a special sequence (can also be used to escape special characters) | "\d" | Try it » |
. | Any character (except newline character) | "he..o" | Try it » |
^ | Starts with | "^hello" | Try it » |
$ | Ends with | "planet$" | Try it » |
* | Zero or more occurrences | "he.*o" | Try it » |
+ | One or more occurrences | "he.+o" | Try it » |
? | Zero or one occurrences | "he.?o" | Try it » |
{} | Exactly the specified number of occurrences | "he.{2}o" | Try it » |
| | Either or | "falls|stays" | Try it » |
() | Capture and group |
Trình tự đặc biệt
Một chuỗi đặc biệt là \
theo sau là một trong các ký tự trong danh sách bên dưới 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" | Try it » |
\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" |
Try it »
Try it » |
\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" |
Try it »
Try it » |
\d | Returns a match where the string contains digits (numbers from 0-9) | "\d" | Try it » |
\D | Returns a match where the string DOES NOT contain digits | "\D" | Try it » |
\s | Returns a match where the string contains a white space character | "\s" | Try it » |
\S | Returns a match where the string DOES NOT contain a white space character | "\S" | Try it » |
\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" | Try it » |
\W | Returns a match where the string DOES NOT contain any word characters | "\W" | Try it » |
\Z | Returns a match if the specified characters are at the end of the string | "Spain\Z" | Try it » |
bộ
Tập hợp là tập hợp các ký tự bên trong một cặp dấu ngoặc vuông []
với ý nghĩa đặc biệt:
Set | Description | Try it |
---|---|---|
[arn] | Returns a match where one of the specified characters ( a ,
r , or n ) is
present |
Try it » |
[a-n] | Returns a match for any lower case character, alphabetically between
a and n |
Try it » |
[^arn] | Returns a match for any character EXCEPT a ,
r , and n |
Try it » |
[0123] | Returns a match where any of the specified digits ( 0 ,
1 , 2 , or
3 ) are
present |
Try it » |
[0-9] | Returns a match for any digit between
0 and 9 |
Try it » |
[0-5][0-9] | Returns a match for any two-digit numbers from 00 and
59 |
Try it » |
[a-zA-Z] | Returns a match for any character alphabetically between
a and z , lower case OR upper case |
Try it » |
[+] | In sets, + , * ,
. , | ,
() , $ , {}
has no special meaning, so [+] means: return a match for any
+ character in the string |
Try it » |
Hàm findall()
Hàm findall()
trả về danh sách chứa tất cả các kết quả khớp.
Ví 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)
Hãy tự mình thử »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, một danh sách trống sẽ được trả về:
Ví dụ
Trả về danh sách trống nếu không tìm thấy kết quả khớp:
import re
txt = "The rain in Spain"
x = re.findall("Portugal",
txt)
print(x)
Hãy tự mình thử » Hàm tìm kiếm()
Hàm search()
tìm kiếm kết quả khớp trong chuỗi và trả về đối tượng Match nếu có kết quả khớp.
Nếu có nhiều hơn một kết quả trùng khớp, chỉ lần xuất hiện đầu tiên của trận đấu đó sẽ được trả về:
Ví dụ
Tì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())
Hãy tự mình thử » Nếu không tìm thấy kết quả phù hợp, giá trị None
được trả về:
Ví dụ
Thực hiện tìm kiếm không trả về kết quả nào:
import re
txt = "The rain in Spain"
x = re.search("Portugal",
txt)
print(x)
Hãy tự mình thử » Hàm tách()
Hàm split()
trả về danh sách trong đó chuỗi đã được tách ở mỗi lần khớp:
Ví dụ
Tách từng ký tự khoảng trắng:
import re
txt = "The rain in Spain"
x = re.split("\s",
txt)
print(x)
Hãy tự mình thử » Bạn có thể kiểm soát số lần xuất hiện bằng cách chỉ định tham số maxsplit
:
Ví 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ãy tự mình thử » Hàm phụ()
Hàm sub()
thay thế các kết quả khớp bằng văn bản bạn chọn:
Ví 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)
Hãy tự mình thử » Bạn có thể kiểm soát số lượng thay thế bằng cách chỉ định tham số count
:
Ví 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)
Hãy tự mình thử » Đối tượng phù hợp
Đối tượng So khớp 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ả khớp, giá trị None
sẽ được trả về, thay vì Đối tượng So khớp.
Ví 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
Hãy tự mình thử »Đố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ộ dữ liệu chứa 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ó kết quả khớp
Ví dụ
In vị trí (vị trí bắt đầu và kết thúc) của lần xuất hiện khớp đầ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() )
Hãy tự mình thử »Ví 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 )
Hãy tự mình thử »Ví dụ
In phần của chuỗi nơi có kết quả 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() )
Hãy tự mình thử » Lưu ý: Nếu không khớp, giá trị None
sẽ được trả về, thay vì Đối tượng So khớp.