Computer >> Máy Tính >  >> Lập trình >> Python

Biểu thức chính quy trong Python với các ví dụ?

Biểu thức chính quy là một loại ngôn ngữ lập trình được sử dụng để xác định xem một mẫu có tồn tại trong một chuỗi ký tự (chuỗi) nhất định hay không.

Biểu thức chính quy hoặc Regex là một chuỗi các ký tự đượ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

Để sử dụng mô-đun RegEx, python đi kèm với gói tích hợp được gọi là re, gói mà chúng ta cần làm việc với Biểu thức chính quy. Để sử dụng mô-đun RegEx, chỉ cần nhập mô-đun lại.

 nhập lại 

Ví dụ

 import retxt ="Sử dụng python trong Machine Learning" x =re.search ("^ Sử dụng. * Learning $", txt) if (x):print ("CÓ! Chúng tôi có một kết quả trùng khớp!") else:print ("Không khớp") 

Đầu ra

 CÓ! Chúng ta có một trận đấu! 

Các hàm RegEx

Mô-đun re cung cấp các cặp hàm cho phép chúng tôi tìm kiếm một chuỗi để tìm một kết quả phù hợp.

Chức năng
Mô tả
công cụ tìm kiếm
Trả về danh sách chứa tất cả các kết quả phù hợp
tìm kiếm
Trả về một đối tượng Đối sánh, nếu đối sánh được tìm thấy ở bất kỳ đâu trong chuỗi
tách
Trả về một danh sách, trong đó chuỗi đã được tách ở mỗi phép toán
phụ
Thay thế một hoặc nhiều kết quả phù hợp bằng một chuỗi

Siêu ký tự

Metacharacters trong RegEx là các ký tự có ý nghĩa đặc biệt.

Characters
Mô tả
Ví dụ
[]
Một tập hợp các ký tự
“[a-m]”
\
Báo hiệu một chuỗi đặc biệt, cũng được sử dụng để thoát các ký tự đặc biệt
“\ d”
.
Bất kỳ ký tự nào ngoại trừ ký tự dòng mới
"he..o"
^
Bắt đầu với
“^ Xin chào”
$
Kết thúc bằng
“Thế giới $”
*
Không hoặc nhiều lần xuất hiện
“aix *”
+
Một hoặc nhiều lần xuất hiện
“aix +”
{}
Số lần xuất hiện chính xác
“a | {2}”
|
Hoặc hoặc
"ngắn | dài"
()
Chụp và nhóm

Chuỗi đặc biệt

Các chuỗi đặc biệt trong RegEx là \ theo sau bởi một trong các ký tự được liệt kê bên dưới và có ý nghĩa đặc biệt -

Ký tự
Mô tả
Ví dụ
\ A
Trả về một kết quả phù hợp nếu các ký tự được chỉ định nằm ở đầu chuỗi
“\ APyt”
\ b
Trả về một kết quả phù hợp nếu các ký tự được chỉ định nằm ở đầu hoặc ở cuối một từ
r ”\ bPython” r ”thế giới \ b”
\ B
Trả về một kết quả phù hợp nếu các ký tự được chỉ định có mặt, nhưng KHÔNG ở đầu (hoặc ở cuối) một từ
r ”\ BPython” r ”Thế giới \ B”
\ d
Trả về một kết quả phù hợp nếu chuỗi chứa các chữ số
“\ d”
\ D
Trả về một kết quả phù hợp nếu chuỗi KHÔNG chứa các chữ số
“\ D”
\ s
Trả về một kết quả phù hợp trong đó chuỗi chứa ký tự khoảng trắng
“\ s”
\ S
Trả về một kết quả phù hợp trong đó chuỗi KHÔNG chứa ký tự khoảng trắng
“\ S”
\ w
Trả về một kết quả phù hợp nếu chuỗi chứa bất kỳ ký tự từ nào (các ký tự có thể là chữ cái từ a đến Z, các chữ số từ 0-9 và ký tự gạch dưới _
“\ w”
\ W
Trả về một kết quả phù hợp trong đó chuỗi KHÔNG chứa bất kỳ ký tự từ nào
“\ W”
\ Z
Trả về một kết quả phù hợp nếu các ký tự được chỉ định nằm ở cuối chuỗi
“thế giới \ Z”

Bộ

Tập hợp trong RegEx là tập hợp các ký tự bên trong một cặp dấu ngoặc vuông [] có một số ý nghĩa đặc biệt.

Set
Mô tả
[raj]
Trả về kết quả phù hợp nếu có một trong các ký tự được chỉ định (a, r hoặc n)
[a-r]
Trả về một kết quả phù hợp cho bất kỳ chữ cái viết thường nào, theo thứ tự bảng chữ cái giữa a và r
[^ raj]
Trả về một kết quả phù hợp cho bất kỳ ký tự nào Ngoại trừ r, a và j
[0123]
Trả về một kết quả phù hợp trong đó bất kỳ bài phát biểu nào
[0-9]
Trả về kết quả khớp cho bất kỳ chữ số nào từ 0 đến 9
[0-3] [0-8]
Trả về kết quả khớp cho bất kỳ số có hai chữ số nào từ 00 đến 38
[a-zA-Z]
Trả về kết quả khớp cho bất kỳ ký tự nào theo thứ tự bảng chữ cái giữa a đến z hoặc A đến Z
[+]
Trả về kết quả khớp cho bất kỳ + ký tự nào trong chuỗi

Ví dụ - findall ()

Hàm findall () trả về một danh sách chứa tất cả các kết quả phù hợp.

 # In danh sách tất cả các kết quả phù hợp (“in”) từ textimport retxt ="Sử dụng python trong Machine Learning" x =re.findall ("in", txt) print (x) 

Đầu ra

 ['in', 'in', 'in'] 

Danh sách hiển thị đầu ra phía trên chứa tất cả các kết quả phù hợp theo thứ tự chúng được tìm thấy. Tuy nhiên, nếu không tìm thấy kết quả phù hợp, một danh sách trống sẽ được hiển thị.

Chỉ cần thay đổi dòng bên dưới trong chương trình bên trên của bạn, "mẫu" không có trong văn bản hoặc chuỗi.

 x =re.findall ("Xin chào", txt) 

Đầu ra

 [] 

Ví dụ - hàm search ()

Hàm search () tìm kiếm chuỗi và trả về đối tượng khớp nếu tìm thấy đối sánh.

Tuy nhiên, nếu có nhiều hơn một trận đấu, chỉ số lần xuất hiện đầu tiên của trận đấu sẽ được trả về.

 import retxt ="Python là một trong những ngôn ngữ phổ biến nhất trên thế giới" searchObj =re.search ("\ s", txt) print ("Ký tự khoảng trắng đầu tiên nằm ở vị trí:", searchObj. start ()) 

Đầu ra

 Ký tự khoảng trắng đầu tiên nằm ở vị trí:6 

Tuy nhiên, nếu không tìm thấy kết quả phù hợp nào thì trả về Không có.

Ví dụ - hàm split ()

Hàm split () trong RegEx trả về danh sách trong đó chuỗi đã được tách ở mỗi trận đấu -

 # Tách ở mỗi khoảng trắng đặc trưngmport restring ="Python là một trong những ngôn ngữ phổ biến nhất trên thế giới" searchObj =re.split ("\ s", string) print (searchObj) 

Kết quả

 ['Python', 'is', 'one', 'of', 'the', 'most', 'phổ biến', 'ngôn ngữ', 'xung quanh', 'the', 'thế giới']  

Ví dụ - hàm sub ()

Hàm sub () trong RegEx là để thay thế đối sánh bằng văn bản bạn chọn.

 #Replace mọi khoảng trắng trong chuỗi bằng _:import restring ="Python là một trong những ngôn ngữ phổ biến nhất trên thế giới" searchObj =re.sub ("\ s", "_", string) print ( searchObj) 

Kết quả

 Python_is_one_of_the_most_popular_language_around_the_world 

Đối tượng Đối sánh

Đối tượng khớp trong RegEx là một đối tượng chứa thông tin về tìm kiếm và kết quả. Không tìm thấy kết quả phù hợp nào, Không có kết quả nào được trả lại.

Ví dụ - Tìm kiếm một chuỗi và đối tượng khớp được trả về.

 import restring ="Python là một trong những ngôn ngữ phổ biến nhất trên thế giới" searchObj =re.search ("on", string) print (searchObj) 

Kết quả

 <_sre.SRE_Match đối tượng; span =(4, 6), match ='on'> 

Đối tượng đối sánh 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ộ chứa vị trí bắt đầu và kết thúc của kết quả phù hợp được tìm thấy.

  • .string - trả về chuỗi được truyền vào hàm.

  • .group () - trả về một phần của chuỗi có khớp.

Ví dụ - In phần của chuỗi có khớp.

 # Tìm kiếm bất kỳ từ nào bắt đầu bằng chữ hoa “P”:import restring ="Python là một trong những ngôn ngữ phổ biến nhất trên thế giới" searchObj =re.search (r "\ bP \ w +", string ) print (searchObj) 

Kết quả

 <_sre.SRE_Match đối tượng; span =(0, 6), match ='Python'>