Cộng đồng chia sẻ tri thức Lib24.vn

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

Gửi bởi: Phạm Thọ Thái Dương 19 tháng 2 2020 lúc 16:45:29


Mục lục
* * * * *

Một biểu thức chính quy là một chuỗi đặc biệt của nhân vật giúp bạn kết hợp hoặc tìm chuỗi khác hoặc bộ dây, sử dụng một cú pháp đặc biệt được tổ chức tại một mô hình. Biểu thức chính quy được sử dụng rộng rãi trong thế giới UNIX.

Các mô-đun Python tái cung cấp hỗ trợ đầy đủ cho Perl giống như biểu thức thông thường bằng Python. Mô đun re tăng re.error ngoại lệ nếu xảy ra lỗi trong khi biên dịch hoặc sử dụng biểu thức chính quy.

Chúng tôi sẽ bao gồm hai chức năng quan trọng, sẽ được sử dụng để xử lý các biểu thức thông thường. Nhưng một điều nhỏ trước tiên: Có nhiều ký tự khác nhau, sẽ có ý nghĩa đặc biệt khi chúng được sử dụng trong biểu thức chính quy. Để tránh mọi sự nhầm lẫn trong khi xử lý các biểu thức thông thường, chúng tôi sẽ sử dụng Chuỗi thô làm biểu thức ' .

Các trận đấu Chức năng

Hàm này cố khớp mẫu RE với chuỗi với các cờ tùy chọn .

Đây là cú pháp cho chức năng này -

re.match(pattern, string, flags=0)

Dưới đây là mô tả của các tham số -

  Hàm re.match trả về một đối tượng khớp khi thành công, Không có lỗi. Chúng tôi sử dụng hàm nhóm (num) hoặc nhóm () của đối tượng khớp để có biểu thức khớp.  

Thí dụ

#!/usr/bin/python
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

Khi đoạn mã trên được thực thi, nó tạo ra kết quả như sau -

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

Các tìm kiếm Chức năng

Hàm này tìm kiếm sự xuất hiện đầu tiên của mẫu RE trong chuỗi với các cờ tùy chọn .

Đây là cú pháp cho chức năng này -

re.search(pattern, string, flags=0)

Dưới đây là mô tả của các tham số -

  Hàm re.search trả về một đối tượng khớp khi thành công, không có lỗi nào. Chúng tôi sử dụng hàm nhóm (num) hoặc nhóm () của đối tượng khớp để có biểu thức khớp  

Thí dụ

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print "searchObj.group() : ", searchObj.group()
   print "searchObj.group(1) : ", searchObj.group(1)
   print "searchObj.group(2) : ", searchObj.group(2)
else:
   print "Nothing found!!"

Khi đoạn mã trên được thực thi, nó tạo ra kết quả như sau -

searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

Kết hợp tìm kiếm Versus

Python Mời hai cuộc phẫu thuật nguyên thủy khác nhau dựa trên biểu thức thông thường: trận đấu kiểm tra cho một trận đấu duy nhất vào lúc bắt đầu của chuỗi, trong khi tìm kiếm kiểm tra đối với một bất cứ nơi nào phù hợp trong chuỗi (đây là những gì Perl không theo mặc định).

Thí dụ

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print "match --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"

searchObj = re.search( r'dogs', line, re.M|re.I)
if searchObj:
   print "search --> searchObj.group() : ", searchObj.group()
else:
   print "Nothing found!!"

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau -

No match!!
search --> searchObj.group() :  dogs

Tìm kiếm và thay thế

Một trong những phương thức re quan trọng nhất sử dụng biểu thức chính quy là sub .

Cú pháp

re.sub(pattern, repl, string, max=0)

Phương pháp này thay thế tất cả các lần xuất hiện của RE mẫu trong chuỗi với repl , thay thế tất cả các lần xuất hiện trừ khi max cung cấp. Phương thức này trả về chuỗi đã sửa đổi.

Thí dụ

#!/usr/bin/python
import re

phone = "2004-959-559 # This is Phone Number"

# Delete Python-style comments
num = re.sub(r'#.*$', "", phone)
print "Phone Num : ", num

# Remove anything other than digits
num = re.sub(r'\D', "", phone)    
print "Phone Num : ", num

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau -

Phone Num :  2004-959-559
Phone Num :  2004959559

Công cụ sửa đổi biểu thức chính quy: Cờ tùy chọn

Các biểu thức chính quy có thể bao gồm một công cụ sửa đổi tùy chọn để kiểm soát các khía cạnh khác nhau của kết hợp. Các sửa đổi được chỉ định là một cờ tùy chọn. Bạn có thể cung cấp nhiều công cụ sửa đổi bằng cách sử dụng OR (|) độc quyền, như được hiển thị trước đó và có thể được đại diện bởi một trong số này -

Mẫu biểu thức chính quy

Ngoại trừ các ký tự điều khiển, (+ ?. * ^ $ () [] {} | \) , Tất cả các ký tự khớp với nhau. Bạn có thể thoát một ký tự điều khiển bằng cách đặt trước dấu gạch chéo ngược.

Bảng sau liệt kê cú pháp biểu thức chính quy có sẵn trong Python -


Được cập nhật: hôm kia lúc 0:51:46 | Lượt xem: 619