RegEx Python

RegEx hoặc biểu thức chính quy là chuỗi ký tự tạo thành mẫu tìm kiếm.

RegEx có thể được sử dụng để kiểm tra chuỗi có chứa mẫu tìm kiếm cụ thể hay không.

RegEx

Python cung cấp mô-đun có tên re Gói tích hợp, có thể được sử dụng để xử lý biểu thức chính quy。

Tải re Mô-đun:

import re

Biểu thức chính quy trong Python

Tải re Sau khi cài đặt mô-đun, bạn có thể bắt đầu sử dụng biểu thức chính quy:

Ví dụ

Tìm kiếm chuỗi để xem nó có bắt đầu bằng "China" và kết thúc bằng "country" hay không:

import re
txt = "China là một đất nước tuyệt vời"
x = re.search("^China.*country$", txt)

Chạy ví dụ

Hàm RegEx

re Mô-đun cung cấp một nhóm hàm, cho phép chúng ta tìm kiếm chuỗi để khớp:

Hàm Mô tả
findall Trả về danh sách các phần khớp
search Nếu có khớp ở bất kỳ vị trí nào trong chuỗi, thì trả về đối tượng Match
split Trả về danh sách các phần đã phân chia chuỗi trong mỗi lần khớp
sub Thay thế một hoặc nhiều phần khớp bằng chuỗi

Ký tự đặc biệt

Ký tự là ký tự có ý nghĩa đặc biệt:

Ký tự Mô tả Mẫu TIY
[] Một nhóm ký tự "[a-m]" Thử thử
\ Hiển thị chuỗi đặc biệt (cũng có thể được sử dụng để chuyển đổi ký tự đặc biệt) "\d" Thử thử
. Bất kỳ ký tự nào (trừ ký tự mới dòng) "he..o" Thử thử
^ Bắt đầu bằng "^hello" Thử thử
$ Kết thúc bằng "world$" Thử thử
* Xuất hiện không lần hoặc nhiều lần "aix*" Thử thử
+ Xuất hiện một lần hoặc nhiều lần "aix+" Thử thử
{} Xác định chính xác số lần xuất hiện "al{2}" Thử thử
| Cả hai "falls|stays" Thử thử
(() Bắt giữ và nhóm

Định dạng chuỗi đặc biệt

Định dạng chuỗi đặc biệt là \ Đi theo một ký tự trong bảng sau và có ý nghĩa đặc biệt:

Ký tự Mô tả Mẫu TIY
\A Nếu ký tự được chỉ định nằm ở đầu chuỗi, thì trả về phần khớp "\AThe" Thử thử
\b Trả về phần khớp của ký tự được chỉ định nằm ở đầu hoặc cuối từ r"\bain"
r"rain\b"
Thử thử
Thử thử
\B Trả về phần khớp của ký tự được chỉ định tồn tại nhưng không ở đầu (hoặc cuối) từ r"\Bain"
r"rain\B"
Thử thử
Thử thử
\d Trả về phần khớp của chuỗi chứa số (số 0-9) "\d" Thử thử
\D Trả về phần khớp của chuỗi không chứa số "\D" Thử thử
\s Trả về phần khớp của chuỗi chứa ký tự trống "\s" Thử thử
\S Trả về phần khớp của chuỗi không chứa ký tự trống "\S" Thử thử
\w Trả về một phần khớp, trong đó chuỗi chứa bất kỳ ký tự từ vựng nào
(Từ a đến Z là các ký tự, từ 0 đến 9 là các số và ký tự gạch dưới _)
"\w" Thử thử
\W Trả về một phần khớp, trong đó chuỗi không chứa bất kỳ ký tự từ vựng nào "\W" Thử thử
\Z Nếu ký tự được chỉ định nằm ở cuối chuỗi, thì trả về phần khớp "Spain\Z" Thử thử

集合(Set)

Bộ sưu tập (Set) là một đối tượng bằng hai dấu ngoặc vuông [] Là một nhóm các ký tự trong đó có ý nghĩa đặc biệt:

Bộ sưu tập Mô tả Thử thử
[arn] Trả về phần tử khớp của bất kỳ ký tự nào trong số a, r hoặc n Thử thử
[a-n] Trả về các phần tử khớp của bất kỳ ký tự viết thường nào giữa a và n Thử thử
[^arn] Trả về các phần tử khớp của bất kỳ ký tự nào ngoài a, r và n Thử thử
[0123] Trả về các phần tử khớp của bất kỳ số nào trong số 0, 1, 2 hoặc 3 Thử thử
[0-9] Trả về các phần tử khớp của bất kỳ số nào từ 0 đến 9 Thử thử
[0-5][0-9] Trả về các phần tử khớp của bất kỳ số nào từ 0 đến 9 Thử thử
[a-zA-Z] Trả về các phần tử khớp của bất kỳ ký tự nào giữa a và z, viết thường hoặc in hoa Thử thử
[+] Trong bộ sưu tập, +, *, ., |, (), $, {} không có ý nghĩa đặc biệt, vì vậy [+] biểu thị: trả về các phần tử khớp của ký tự + trong chuỗi Thử thử

Hàm findall()

findall() Hàm trả về danh sách chứa tất cả các phần tử khớp.

Ví dụ

In danh sách tất cả các phần tử khớp:

import re
str = "China is a great country"
x = re.findall("a", str)
print(x)

Chạy ví dụ

Danh sách này chứa các phần tử khớp theo thứ tự được tìm thấy.

Nếu không tìm thấy phần tử khớp, thì trả về danh sách rỗng:

Ví dụ

Nếu không tìm thấy khớp, thì trả về danh sách rỗng:

import re
str = "China is a great country"
x = re.findall("USA", str)
print(x)

Chạy ví dụ

Hàm search()

search() Hàm tìm kiếm phần tử khớp trong chuỗi, nếu có khớp thì trả về đối tượng Match.

Nếu có nhiều khớp, chỉ trả về phần tử khớp đầu tiên:

Ví dụ

Tìm kiếm ký tự trắng đầu tiên trong chuỗi:

import re
str = "China is a great country"
x = re.search("\s", str)
print("Vị trí ký tự trắng đầu tiên là: ", x.start())

Chạy ví dụ

Nếu không tìm thấy khớp, thì giá trị trả về None:

Ví dụ

Tìm kiếm không trả về phần tử khớp:

import re
str = "China is a great country"
x = re.search("USA", str)
print(x)

Chạy ví dụ

Hàm split()

split() Hàm trả về một danh sách các phần tử chuỗi được tách mỗi khi khớp:

Ví dụ

Tách chuỗi tại mỗi ký tự trắng:

import re
str = "China is a great country"
x = re.split("\s", str)
print(x)

Chạy ví dụ

Bạn có thể chỉ định maxsplit Tham số để kiểm soát số lần xuất hiện:

Ví dụ

Chỉ tách chuỗi tại lần xuất hiện đầu tiên:

import re
str = "China is a great country"
x = re.split("\s", str, 1)
print(x)

Chạy ví dụ

Hàm sub()

sub() Hàm thay thế phần tử khớp bằng văn bản bạn chọn:

Ví dụ

Thay thế mọi ký tự trắng bằng số 9:

import re
str = "China is a great country"
x = re.sub("\s", "9", str)
print(x)

Chạy ví dụ

Bạn có thể chỉ định count Tham số để kiểm soát số lần thay thế:

Ví dụ

Thay thế hai lần xuất hiện đầu tiên:

import re
str = "China is a great country"
x = re.sub("\s", "9", str, 2)
print(x)

Chạy ví dụ

Đối tượng Match

Đối tượng Match là đối tượng chứa thông tin về việc tìm kiếm và kết quả.

Ghi chú:Nếu không có khớp, sẽ trả về giá trị Nonemà không phải là đối tượng Match.

Ví dụ

Thực hiện sẽ trả về đối tượng Match của việc tìm kiếm:

import re
str = "China is a great country"
x = re.search("a", str)
print(x) # Sẽ in một đối tượng

Chạy ví dụ

Đối tượng Match cung cấp các thuộc tính và phương pháp để lấy lại thông tin về việc tìm kiếm và kết quả:

  • span() Đối tượng trả về bao gồm vị trí bắt đầu và kết thúc của khớp
  • .string Trả về chuỗi được truyền vào hàm
  • group() Trả về phần chuỗi khớp

Ví dụ

In vị trí xuất hiện đầu tiên của khớp (vị trí bắt đầu và kết thúc):

Tìm kiếm biểu thức chính quy bắt đầu bằng chữ cái in "C" nào đó:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.span())

Chạy ví dụ

Ví dụ

In chuỗi được truyền vào hàm:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.string)

Chạy ví dụ

Ví dụ

In phần chuỗi khớp.

Tìm kiếm biểu thức chính quy bắt đầu bằng chữ cái in "C" nào đó:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.group())

Chạy ví dụ

Ghi chú:Nếu không có mục匹ch, sẽ trả về giá trị Nonemà không phải là đối tượng Match.