Khẳng định nhìn trước
Bài học 20 trên 28 trong khóa học Biểu thức chính quy trong Python của Coddy.
Lookahead là các khẳng định cho phép bạn khớp một nhóm ký tự chỉ khi nhóm đó được theo sau (lookahead dương) hoặc không được theo sau (lookahead âm) bởi một mẫu cụ thể. Lookahead không tiêu thụ ký tự trong chuỗi, chúng chỉ khẳng định liệu có thể khớp hay không.
- Lookahead dương
<strong>(?=...)</strong>: Khớp một nhóm ký tự chỉ khi nhóm đó được theo sau bởi một mẫu cụ thể. - Lookahead âm
<strong>(?!...)</strong>: Khớp một nhóm ký tự chỉ khi nhóm đó không được theo sau bởi một mẫu cụ thể.
import re
text = "foo1 foo2 foo3 foo"
pattern_positive = r"foo(?=\d)"
pattern_negative = r"foo(?!\d)"
matches_positive = re.findall(pattern_positive, text)
matches_negative = re.findall(pattern_negative, text)
print("Matches with positive lookahead:", matches_positive) # Đầu ra: ['foo', 'foo', 'foo']
print("Matches with negative lookahead:", matches_negative) # Đầu ra: ['foo']Trong ví dụ trên, mẫu foo(?=\d) khớp với "foo" chỉ khi theo sau nó là một chữ số, còn mẫu foo(?!\d) khớp với "foo" chỉ khi theo sau nó không phải là một chữ số.
Thử thách
DễViết một hàm có tên find_numbers_followed_by_words, nhận một chuỗi văn bản làm đầu vào và trả về danh sách các số đứng trước một từ.
Tự làm thử
import re
def find_numbers_followed_by_words(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