Menu
CoddyTech

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ố.

challenge icon

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 ở đây

Tấ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