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 négatif : `(?!...)`

Le lookahead négatif (?!...) est la version négative du lookahead positif : il exige que le motif donné ne suive PAS la position actuelle. Il est toujours de largeur nulle : aucun caractère n'est consommé.

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

Seul 75 correspond, car c'est la seule séquence de chiffres qui n'est PAS suivie de euro. Les chiffres 100 et 25 sont suivis de euro et sont exclus.

Motifs typiques de lookahead négatif

  • ^(?!.*errore).*$ -- une ligne qui ne contient PAS le mot "errore".
  • \b(?!the\b)\w+\b -- un mot qui n'est pas the.
  • (?!s) -- la position actuelle n'est PAS un espace blanc (utile comme "trim").
Code
Pattern: ^(?!.*\.bak$).*$
Sample (multiline avec le drapeau m) :
  foto.jpg
  backup.bak
  documento.txt
Match : foto.jpg, documento.txt (exclut backup.bak)

Exclusions avancées via lookahead négatif

Le lookahead négatif (?!...) est essentiel pour implémenter une logique d'exclusion (comme vérifier qu'un mot de passe ne contient pas de mots du dictionnaire ou qu'un identifiant n'est pas un mot-clé réservé comme class ou function).

À vous de jouer

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

Trouvez chaque nombre qui n'est PAS suivi de ' euro' (excluant ainsi les prix en euros).

Chargement de l'éditeur…
Afficher l'indice

Utilisez (?! ...) pour dire 'ne doit PAS suivre'. La séquence ` euro` ne doit pas apparaître après.

Solution disponible après 3 tentatives

Exercice de révision

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

Trouvez chaque mot d'au moins 3 lettres qui n'est PAS 'the' (insensible à la casse).

Chargement de l'éditeur…
Afficher l'indice

Juste après \b, ouvrez un lookahead négatif (?!the\b) qui exclut uniquement le mot the.

Solution disponible après 3 tentatives

Défi supplémentaire

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

Trouvez tous les mots composés de lettres qui ne contiennent pas la lettre `x` à n'importe quelle position (ex. correspond à `test`, `game` mais pas à `extra`, `box`).

Chargement de l'éditeur…
Afficher l'indice

Utilisez un lookahead négatif (?!\w*x) juste après la limite de mot \b.

Solution disponible après 3 tentatives