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é.
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 pasthe.(?!s)-- la position actuelle n'est PAS un espace blanc (utile comme "trim").
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
Trouvez chaque nombre qui n'est PAS suivi de ' euro' (excluant ainsi les prix en euros).
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
Trouvez chaque mot d'au moins 3 lettres qui n'est PAS 'the' (insensible à la casse).
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
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`).
Afficher l'indice
Utilisez un lookahead négatif (?!\w*x) juste après la limite de mot \b.
Solution disponible après 3 tentatives