Khẳng định nhìn sau
Bài học 21 trên 28 trong khóa học Biểu thức chính quy trong Python của Coddy.
Lookbehind là các khẳng định cho phép bạn khớp một nhóm ký tự chỉ khi chúng đứng sau một mẫu cụ thể (lookbehind dương) hoặc không đứng sau một mẫu cụ thể (lookbehind âm). Giống như lookahead, lookbehind không tiêu thụ ký tự trong chuỗi.
- Lookbehind dương
<strong>(?<=...)</strong>: Khớp một nhóm ký tự chỉ khi chúng đứng sau một mẫu cụ thể. - Lookbehind âm
<strong>(?<!...)</strong>: Khớp một nhóm ký tự chỉ khi chúng không đứng sau một mẫu cụ thể.
import re
text = "1foo 2foo 3foo foo"
pattern_positive = r"(?<=\d)foo"
pattern_negative = r"(?<!\d)foo"
matches_positive = re.findall(pattern_positive, text)
matches_negative = re.findall(pattern_negative, text)
print("Matches with positive lookbehind:", matches_positive) # Đầu ra: ['foo']
print("Matches with negative lookbehind:", matches_negative) # Đầu ra: ['foo', 'foo', 'foo']Trong ví dụ trên, mẫu (?<=\d)foo chỉ khớp với "foo" nếu nó đứng sau một chữ số, còn mẫu (?<!\d)foo chỉ khớp với "foo" nếu nó không đứng sau một chữ số.
Thử thách
DễViết một hàm (function) có tên find_words_preceded_by_numbers, nhận một chuỗi văn bản làm đầu vào và trả về danh sách các từ đứng sau một số.
Tự làm thử
import re
def find_words_preceded_by_numbers(text):
# Viết code ở đâyTất cả bài học trong Biểu thức chính quy trong Python
Tự luyện tập: Trình biên dịch Python online
Thử một mẫu trên văn bản của bạn: Công cụ kiểm tra regex