Menu
CoddyTech

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

challenge icon

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