Lecții din modul (2/4)
Privire negativă înainte: `(?!...)`
Prospecția negativă (?!...) este sora întunecată a anticipării pozitive:
necesită ca modelul dat NU să urmeze poziția curentă. Este
încă zero-width: nu este consumat niciun caracter.
Pattern: \d+(?! euro)
Sample: Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
^^Doar 75 se potrivește, deoarece este singura secvență de cifre NU urmată de
euro. Cifrele 100 și 25 sunt urmate de euro și sunt
excluse.
Tipare de anticipare negative tipice
^(?!.*errore).*$-- o linie care NU conține cuvântul „errore”.\b(?!the\b)\w+\b-- un cuvânt care nu estethe.(?!\s)-- poziția curentă NU este un spațiu alb (util ca „decupare”).
Pattern: ^(?!.*\.bak$).*$
Sample (multiline with flag m):
foto.jpg
backup.bak
documento.txt
Match: foto.jpg, documento.txt (excludes backup.bak)Excluderi avansate prin anticipare negativă
Prevederea negativă (?!...) este esențială pentru implementarea logicii de excludere (cum ar fi verificarea faptului că o parolă nu conține cuvinte din dicționar sau că un identificator nu este un cuvânt cheie rezervat, cum ar fi class sau function).
Încearcă
Găsiți fiecare număr NU urmat de „euro” (deci excluzând prețurile în euro).
Afișează indiciu
Folosiți (?! ...) pentru a spune „NU trebuie să urmeze”. Secvența „euro” nu trebuie să apară după.
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Găsiți fiecare cuvânt de cel puțin 3 litere care NU este „cel” (insensibil la majuscule).
Afișează indiciu
Imediat după \\b deschideți un lookahead negativ (?!the\\b) care exclude doar cuvântul the.
Soluție disponibilă după 3 încercări
Provocare suplimentară
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`).
Afișează indiciu
Utilizați un aspect negativ (?!\\w*x) imediat după limita cuvântului \\b.
Soluție disponibilă după 3 încercări