Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Regex Python: Không khớp ký tự sau khi lặp (Negative Lookahead)

Dùng Negative Lookahead (?!...) để khẳng định: tại vị trí hiện tại, pattern bên trong không được khớp. Lookahead không tiêu thụ ký tự (zero-width).

Ví dụ: Chuỗi KHÔNG bắt đầu bằng 1-2 chữ số 2 theo sau là 5

Pattern: ^(?!2{1,2}5).*

  • ^ — đầu chuỗi.
  • (?!2{1,2}5) — negative lookahead: không được là 1 hoặc 2 chữ số 2 rồi đến 5.
  • .* — khớp phần còn lại.
import re
foo1 = '2249678'
foo2 = '2259678'
print(re.findall(r'^(?!2{1,2}5).*', foo1))  # ['2249678']
print(re.findall(r'^(?!2{1,2}5).*', foo2))  # []

Các loại Lookaround

TênCú phápÝ nghĩa
Positive Lookahead(?=...)Phải khớp ... phía trước
Negative Lookahead(?!...)Không được khớp ... phía trước
Positive Lookbehind(?<=...)Phải khớp ... phía sau
Negative Lookbehind(?Không được khớp ... phía sau