Chuyển đến nội dung chính
Mô-đun 6 · Bài học 2 trong tổng số 422/32 trong khóa học~10 min
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.

Code
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ỏ").
Code
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ập thể dục#regex.m6.l2.e1
Nỗ lực: 0Đang tải…

Tìm mọi số KHÔNG có 'euro' theo sau (do đó không bao gồm giá euro).

Đang tải trình chỉnh sửa…
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ập thể dục#regex.m6.l2.e2
Nỗ lực: 0Đang tải…

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

Đang tải trình chỉnh sửa…
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

tập thể dục#regex.m6.l2.e3
Nỗ lực: 0Đang tải…

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`).

Đang tải trình chỉnh sửa…
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ử