Bài học theo mô-đun (2/4)
Cái nhìn tiêu cực: `(?!...)`
cái nhìn tiêu cực (?!...) là chị em đen tối của cái nhìn tích cực:
nó yêu cầu mẫu đã cho KHÔNG tuân theo vị trí hiện tại. Đó là
vẫn độ rộng bằng 0: không có ký tự nào được sử dụng.
Pattern: \d+(?! euro)
Sample: Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
^^Chỉ 75 khớp vì đây là chuỗi chữ số duy nhất KHÔNG được theo sau
euro. Các chữ số 100 và 25 được theo sau bởi euro và là
bị loại trừ.
Các kiểu nhìn tiêu cực điển hình
^(?!.*errore).*$-- một dòng KHÔNG chứa từ "lỗi".\b(?!the\b)\w+\b-- một từ không phải làthe.(?!\s)-- vị trí hiện tại KHÔNG phải là khoảng trắng (hữu ích khi "cắt bỏ").
Pattern: ^(?!.*\.bak$).*$
Sample (multiline with flag m):
foto.jpg
backup.bak
documento.txt
Match: foto.jpg, documento.txt (excludes backup.bak)Loại trừ nâng cao thông qua việc xem xét tiêu cực
Giao diện phủ định (?!...) là cần thiết để triển khai logic loại trừ (như xác minh rằng mật khẩu không chứa các từ trong từ điển hoặc mã định danh không phải là từ khóa dành riêng như class hoặc function).
Hãy thử nó
Tìm mọi số KHÔNG có 'euro' theo sau (do đó không bao gồm giá euro).
Hiển thị gợi ý
Sử dụng (?! ...) để nói 'không được tuân theo'. Chuỗi ` euro` không được xuất hiện sau.
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Tìm mọi từ có ít nhất 3 chữ cái KHÔNG phải là 'the' (không phân biệt chữ hoa chữ thường).
Hiển thị gợi ý
Ngay sau \\b, hãy mở một giao diện phủ định (?!the\\b) chỉ loại trừ từ the.
Giải pháp khả dụng sau 3 lần thử
Thử thách bổ sung
Find all words consisting of letters that do not contain the letter `x` at any position (e.g. match `test`, `game` but not `extra`, `box`).
Hiển thị gợi ý
Sử dụng giao diện phủ định (?!\\w*x) ngay sau ranh giới từ \\b.
Giải pháp khả dụng sau 3 lần thử