Saltar al contenido principal
eLearner.app
Módulo 6 · Lección 2 de 422/32 en el curso~10 min
Lecciones del módulo (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

Ejercicio#regex.m6.l2.e1
Intentos: 0Cargando...

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

Cargando editor...
Mostrar pista

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

Solución disponible después de 3 intentos

Esercizio di ripasso

Ejercicio#regex.m6.l2.e2
Intentos: 0Cargando...

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

Cargando editor...
Mostrar pista

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

Solución disponible después de 3 intentos

Sfida aggiuntiva

Ejercicio#regex.m6.l2.e3
Intentos: 0Cargando...

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

Cargando editor...
Mostrar pista

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

Solución disponible después de 3 intentos