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

Lookbehind : `(?<=...)` `(?<!...)`

Les lookbehind sont la version miroir du lookahead : ils regardent avant de la position actuelle, toujours à largeur nulle.

  • (?<=...) -- lookbehind positif : le motif doit être là en premier.
  • (?<!...) -- lookbehind négatif : le motif ne doit PAS être là en premier.
Code
Pattern: (?<=\$)\d+
Sample:  Costo $100, sconto -25, totale $75.
                ^^^                  ^^

Le $ n'est pas dans la correspondance, mais sert de condition : seuls les chiffres correspondent précédé du signe dollar.

Regardez derrière le négatif

Code
Pattern: (?<!\w)\d+
Sample:  Codice abc123 e numero 456.
                              ^^^

(?<!\w) nécessite qu'il n'y ait PAS de caractère de mot avant les chiffres : abc123 est exclu (avant 123 il y a c, un \w), 456 matcha (avant il y a un espace).

Différence clé par rapport au groupe sans capture

Code
\\$\\d+         matcha "$100": il match include il dollaro.
(?<=\\$)\\d+    matcha "100":  il match contiene SOLO le cifre.

Si vous devez extraire la valeur "propre" sans le préfixe, regardez derrière c'est le bon choix.

Compatibilité d'analyse JavaScript

Les (?<=...) positifs et négatifs (?<!...) vous permettent de voir ce qui précède votre position actuelle. En JavaScript, ils sont pris en charge à partir de ES2018 ; dans les anciens navigateurs ou les anciens moteurs Node.js, ils pouvaient provoquer des erreurs de compilation d'expressions régulières.

Essayez-le vous-même

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

Estrai solo l'importo numerico (senza il simbolo $) dai prezzi del testo.

Chargement de l'éditeur…
Afficher l'indice

Sposta \\$ dentro un lookbehind positivo (?<=\\$): condizione di posizione, non parte del match.

Solution disponible après 3 tentatives

Exercice de révision

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

Trova ogni sequenza di cifre NON preceduta da una lettera o cifra (cioe' numeri 'isolati', non parti di codice come `abc123`).

Chargement de l'éditeur…
Afficher l'indice

Usa lookbehind negativo (?<!\\w) per escludere se prima c'e' una lettera o cifra.

Solution disponible après 3 tentatives

Défi supplémentaire

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

Trova solo le cifre dei numeri negativi (cifre precedute dal segno `-`), escludendo il segno meno dal match.

Chargement de l'éditeur…
Afficher l'indice

Sposta il segno meno - all'interno di un lookbehind positivo (?<=-).

Solution disponible après 3 tentatives