Passer au contenu principal
eLearner.app
Module 6 · Leçon 2 sur 422/32 dans le cours~10 min
Leçons du module (2/4)

Lookahead negativo: `(?!...)`

Il lookahead negativo (?!...) e' la sorella scura del lookahead positivo: richiede che dopo la posizione corrente NON segua il pattern indicato. E' ancora a larghezza zero: nessun carattere viene consumato.

Code
Pattern: \d+(?! euro)
Sample:  Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
                                          ^^

Solo 75 matcha, perche' e' l'unica sequenza di cifre che NON e' seguita da euro. Le cifre 100 e 25 invece sono seguite proprio da euro e vengono escluse.

Pattern tipici di lookahead negativo

  • ^(?!.*errore).*$ -- una riga che NON contiene la parola "errore".
  • \b(?!the\b)\w+\b -- una parola che non e' the.
  • (?!\s) -- la posizione corrente NON e' uno spazio (utile come "trim").
Code
Pattern: ^(?!.*\.bak$).*$
Sample (multilinea con flag m):
  foto.jpg
  backup.bak
  documento.txt
Match: foto.jpg, documento.txt (esclude backup.bak)

Esclusioni avanzate tramite lookahead negativo

Il lookahead negativo (?!...) è fondamentale per implementare logiche di esclusione (like verificare che una password non contenga parole banali o che un identificatore non sia una parola chiave riservata come class o function).

Prova tu

Exercice#regex.m6.l2.e1
Tentatives : 0Chargement…

Trova ogni numero NON seguito da ' euro' (quindi escludendo i prezzi in euro).

Chargement de l'éditeur…
Afficher l'indice

Usa (?! ...) per dire 'NON deve seguire'. La sequenza ` euro` non deve apparire dopo.

Solution disponible après 3 tentatives

Esercizio di ripasso

Exercice#regex.m6.l2.e2
Tentatives : 0Chargement…

Trova ogni parola di almeno 3 lettere che NON sia 'the' (case-insensitive).

Chargement de l'éditeur…
Afficher l'indice

Subito dopo \\b apri un lookahead negativo (?!the\\b) che esclude solo la parola the.

Solution disponible après 3 tentatives

Sfida aggiuntiva

Exercice#regex.m6.l2.e3
Tentatives : 0Chargement…

Trova tutte le parole composte da lettere che non contengono la lettera `x` in nessuna posizione (es. matcha `test`, `game` ma non `extra`, `box`).

Chargement de l'éditeur…
Afficher l'indice

Usa un lookahead negativo (?!\w*x) subito dopo il confine di parola \b.

Solution disponible après 3 tentatives