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

Lookaround en pratique

Mettons en pratique les quatre formes de lookaround dans des scénarios réels. Les lookarounds excellent lorsque vous devez :

  1. Extraire une valeur sans le contexte qui l'identifie.
  2. Valider une chaîne par rapport à plusieurs conditions indépendantes.
  3. Filtrer les correspondances qui satisfont à certaines conditions mais pas à d'autres.

Validation de mot de passe

Code
Pattern: ^(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z\d]).{8,}$
Checks:
  - au moins une majuscule     (?=.*[A-Z])
  - au moins un chiffre        (?=.*\d)
  - au moins un symbole        (?=.*[^a-zA-Z\d])
  - longueur minimale de 8     .{8,}

Chaque lookahead vérifie une condition, en partant du début (^). Ils sont tous de largeur nulle : le moteur reste à la position 0 puis consomme avec .{8,}$.

Extraction entre délimiteurs

Code
Pattern: (?<=\().+?(?=\))
Sample:  Funzione foo(bar) e baz(qux, qix)
Match: "bar", "quux, qix" (sans les parenthèses)

Lookbehind + lookahead + quantificateur paresseux (lazy) : extrait le contenu à l'intérieur des parenthèses sans les inclure.

Combinaison de lookahead et de lookbehind

L'utilisation conjointe de lookahead et de lookbehind permet d'isoler des chaînes qui se trouvent dans des balises ou des formats spécifiques (par exemple, extraire du texte entre deux balises sans inclure les balises dans la correspondance finale). Cela évite les opérations ultérieures de nettoyage de chaînes.

À vous de jouer

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

Extrayez la valeur de chaque affectation `key=value` du journal : UNIQUEMENT les valeurs (pas de clés, pas de `=`). Les valeurs peuvent contenir des lettres et des chiffres.

Chargement de l'éditeur…
Afficher l'indice

Déplacez `=` à l'intérieur d'un lookbehind (?<==) : de cette façon, la correspondance ne contient que la valeur.

Solution disponible après 3 tentatives

Exercice de révision

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

Trouvez quels mots ont au moins UNE lettre majuscule ET au moins UN chiffre (dans n'importe quel ordre), en les localisant dans le texte.

Chargement de l'éditeur…
Afficher l'indice

Double lookahead au début : (?=\w*[A-Z])(?=\w*\d). Consommez ensuite le mot avec \w+.

Solution disponible après 3 tentatives

Défi supplémentaire

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

Extrayez uniquement les chiffres numériques qui sont entourés exactement de parenthèses, par exemple extrayez `102` de `(102)` sans capturer les parenthèses.

Chargement de l'éditeur…
Afficher l'indice

Combinez un lookbehind positif (?<=\( ) pour la parenthèse ouvrante et un lookahead positif (?=\) ) pour la parenthèse fermante.

Solution disponible après 3 tentatives