Nhóm tham lam regex Python

Nếu bạn tình cờ đọc được bài viết này và chưa quen với loạt bài hướng dẫn về cụm từ thông dụng này, vui lòng xem qua phần còn lại của loạt bài này [theo thứ tự]

  1. Biểu thức chính quy. Khái niệm cơ bản
  2. Biểu thức chính quy. Nhóm & ký tự đường ống
  3. Biểu thức chính quy. Sự lặp lại & Kết hợp tham lam/không tham lam
  4. Biểu thức chính quy. Lớp ký tự & Phương thức findall[]
  5. Biểu thức chính quy. Dot-Star và các ký tự Caret/Dollar
  6. Biểu thức chính quy. sub[] Phương thức và Chế độ chi tiết

Bây giờ chúng ta đã hiểu rõ về cách nhóm liên quan đến biểu thức chính quy, chúng ta có thể đi sâu vào các khái niệm phức tạp hơn như toán tử lặp lại

Toán tử lặp lại là các ký tự meta đặc biệt. ? . Các ký tự lặp lại này được sử dụng để chỉ định số lần một mẫu phụ có thể xảy ra và chúng hoạt động khác nhau trong các tình huống khác nhau

Dấu chấm hỏi [?]

Trong regex, ký tự meta “?” . Biểu tượng này khớp với 0 hoặc một phiên bản của ký tự/nhóm trước đó. Ví dụ: biểu thức chính quy [T]?he có nghĩa là. chữ hoa 'T' là tùy chọn, sau đó là chữ thường 'h' và 'e'

[T]he => The car is parked in the garage.

Kiểm tra biểu thức chính quy

[T]?he => The car is parked in the garage.

Kiểm tra biểu thức chính quy

ví dụ 1. Thực hiện dấu chấm hỏi

Hãy cùng khám phá regex. Bat[wo]?man. Có vẻ như chúng ta đã nhóm [wo] lại với nhau và có dấu chấm hỏi [?] theo sau nghĩa là nhóm [wo] là tùy chọn [chỉ có 0 hoặc 1]

Nếu chúng ta phân tích chuỗi ở trên, “The Adventures of Batman”, chúng ta có thể thấy rằng mẫu biểu thức chính quy sẽ khớp với “Batman” vì [wo] là tùy chọn

ví dụ 2. Triển khai Dấu chấm hỏi [tiếp theo]

Phân tích chuỗi từ trên, chúng ta sẽ thấy rằng mẫu biểu thức chính quy sẽ vẫn khớp với “Batwoman”

ví dụ 3. Triển khai Dấu chấm hỏi [tiếp theo]

Đối với chuỗi này, "The Adventures of Batwowowowowoman", mẫu biểu thức chính quy sẽ không khớp với bất kỳ thứ gì. Nhóm [wo] lặp đi lặp lại nhiều lần

Quay trở lại ví dụ về số điện thoại, nếu chúng ta muốn đặt mã vùng là tùy chọn thì đây là mẫu biểu thức chính quy của chúng ta sẽ như thế nào

phoneRegex = re.compile[r’[\d\d\d]-]?\d\d\d-\d\d\d\d’]phoneRegex.search[‘My phone number is 415–555–1234. Call me tomorrow.’] # WORKSphoneRegex.search[‘My phone number is 555–1234. Call me tomorrow.’] # WORKS

Dấu hoa thị [*]

Dấu hoa thị [*] khớp với 0 hoặc nhiều lần lặp lại của nhóm/ký tự trước đó. Regex, a*, có nghĩa là. không hoặc nhiều lần lặp lại ký tự chữ thường trước đó 'a'

Ví dụ 4. Thực hiện dấu hoa thị

Ví dụ này là một trong những ví dụ giống như khi chúng ta thảo luận về toán tử lặp lại dấu chấm hỏi

biểu thức chính quy. Bat[wo]*man. Bạn có thể thấy rằng phía trước nhóm [wo], có một dấu hoa thị theo sau nó, điều đó có nghĩa là không thể có hoặc nhiều nhóm [wo] trong một chuỗi. Regex được áp dụng sẽ phù hợp với chuỗi đã cho này

Dấu cộng [+]

Ký hiệu cộng [+] khớp với một hoặc nhiều lần lặp lại của nhóm/ký tự trước đó. Ví dụ, biểu thức chính quy, c. +t, có nghĩa là. chữ c viết thường, theo sau là ít nhất một ký tự, theo sau là ký tự viết thường t. Cần phải làm rõ rằng 't' là 't' cuối cùng trong câu

Bạn sẽ nhận thấy một khoảng thời gian trong regex. Dấu chấm là một ký tự meta đặc biệt khác về cơ bản khớp với bất kỳ ký tự đơn nào ngoại trừ dấu ngắt dòng [\n]

c.+t => The fat cat sat on the mat

Kiểm tra biểu thức chính quy

Ví dụ 5. Triển khai biểu tượng Plus

biểu thức chính quy. “Bat[wo]+man” cũng sẽ khớp với “Batwowowowowoman” cho chuỗi trên

Thoát ?, *, +______4

Nếu chúng ta muốn thoát khỏi bất kỳ ký tự meta nào như ?, * hoặc +, chúng ta chỉ cần đặt dấu gạch chéo ngược trước chúng để tìm kiếm các ký tự đó

regex = re.compile[r’[\+\*\?]+’]regex.search[‘I learned about +*?+*?+*?+*?+*? regex syntax’]

Trong biểu thức chính quy ở trên, chúng tôi đã thoát dấu +, *, ? . Chúng tôi đang khớp nhóm, [\+\*\?], một hoặc nhiều lần

Sự lặp lại trong Regex - Bộ định lượng

Trong các biểu thức chính quy, dấu ngoặc nhọn thường được sử dụng làm bộ định lượng để chỉ định số lần một ký tự hoặc một nhóm ký tự có thể được lặp lại

Ví dụ 6. định lượng

Hãy xem mẫu regex ở trên. [Hà]{3}

Những gì chúng tôi đang nói là, "khớp một chuỗi lặp lại nhóm [Ha] 3 lần"

Ví dụ 7. Bộ định lượng [con’t]

Trong biểu thức chính quy ở trên, chúng tôi đã đặt mã vùng là tùy chọn và chỉ định rằng chúng tôi muốn khớp 3 số điện thoại trong chuỗi

Ví dụ 8. {x, y} - [ít nhất là x, nhiều nhất là y]

Chúng tôi cũng có thể khớp một loạt các lần lặp lại có thể có {x, y} [ít nhất là x số lần và nhiều nhất là y số lần]

Trong biểu thức chính quy ở trên, chúng tôi khớp tối thiểu [Ha] ba lần và tìm kiếm tối đa 5 lần

Ví dụ 9. {, 5} - Bỏ qua số đầu tiên sẽ được coi là 0

haRegex = re.compile[r’[Ha]{,5}’]

Ở đây chúng tôi chỉ đơn giản là bỏ đi số đầu tiên. Nếu chúng tôi không chỉ định số đầu tiên trong phạm vi, trình thông dịch sẽ cho rằng phạm vi bắt đầu từ 0. Do đó, phạm vi là 0–5

Ví dụ 10. {3, } - Bỏ qua số cuối cùng sẽ cho rằng kết thúc là không xác định

haRegex = re.compile[r’[Ha]{3,}’]

Ở đây, chúng tôi giả sử rằng phạm vi bắt đầu từ 3 và kết thúc là không xác định có nghĩa là mẫu biểu thức chính quy tìm kiếm 3 hoặc nhiều hơn

Ví dụ 11. Thực hiện một phạm vi

________số 8

Trong biểu thức chính quy này, về cơ bản, chúng tôi đang tìm kiếm 3–5 chữ số trong một chuỗi

Một lưu ý nhỏ về So khớp tham lam và không tham lam

Biểu thức chính quy bắt đầu khớp ngay lập tức. Trận đấu sớm nhất họ có thể tìm thấy là những gì nó sẽ trả lại. Theo mặc định, các biểu thức chính quy thực hiện các đối sánh tham lam. Các trận đấu tham lam về cơ bản là các chuỗi dài nhất có thể được khớp và trả về theo mẫu biểu thức chính quy

Ví dụ 12. Trận đấu không tham lam

digitRegex = re.compile[r’[\d]{3,5}?’]digitRegex.search[‘1234567890’]

Hãy cùng khám phá regex ở trên chi tiết hơn. Nếu chúng ta đặt dấu chấm hỏi sau phạm vi trước đó, mẫu biểu thức chính quy sẽ chỉ duyệt qua và khớp với số lần lặp lại tối thiểu chứ không phải số lần lặp lại tối đa

Tham lam trong regex là gì?

Tham lam. Càng nhiều càng tốt [trận đấu dài nhất] . \d+ do đó có thể khớp với một hoặc nhiều chữ số. Nhưng "một hoặc nhiều" là khá mơ hồ. trong chuỗi 123, "một hoặc nhiều chữ số" [bắt đầu từ bên trái] có thể là 1, 12 hoặc 123.

Các trận đấu tham lam trong Python là gì?

Kết hợp tham lam có nghĩa là công cụ biểu thức chính quy [công cụ cố gắng tìm mẫu của bạn trong chuỗi] khớp với nhiều ký tự nhất có thể .

Biểu thức chính quy '$' sẽ khớp với cái gì?

Theo mặc định, biểu thức chính quy sẽ khớp với bất kỳ phần nào của chuỗi. Thường hữu ích khi neo biểu thức chính quy để nó khớp từ đầu hoặc cuối chuỗi. ^ khớp với phần đầu của chuỗi. $ khớp với phần cuối của chuỗi .

Các nhóm bắt giữ trong regex Python là gì?

Ngoài ra, chụp nhóm là một cách để coi nhiều ký tự là một đơn vị . Chúng được tạo bằng cách đặt các ký tự được nhóm bên trong một tập hợp các dấu ngoặc đơn [ , ]. Chúng tôi có thể chỉ định bao nhiêu nhóm tùy ý. Mỗi mẫu phụ bên trong một cặp dấu ngoặc đơn sẽ được ghi lại dưới dạng một nhóm.

Chủ Đề