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 in pratica

Mettiamo insieme tutte e quattro le forme di lookaround in scenari reali. I lookaround brillano quando devi:

  1. Estrarre un valore senza il contesto che lo identifica.
  2. Validare una stringa contro condizioni multiple indipendenti.
  3. Filtrare match che ne soddisfano alcune ma non altre.

Validazione password

Code
Pattern: ^(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z\d]).{8,}$
Verifica:
  - almeno una maiuscola      (?=.*[A-Z])
  - almeno una cifra          (?=.*\d)
  - almeno un simbolo         (?=.*[^a-zA-Z\d])
  - lunghezza minima 8        .{8,}

Ogni lookahead controlla una condizione, partendo dall'inizio (^). Sono tutti a larghezza zero: l'engine rimane in posizione 0 e poi consuma con .{8,}$.

Estrazione tra delimitatori

Code
Pattern: (?<=\().+?(?=\))
Sample:  Funzione foo(bar) e baz(qux, qix)
Match: "bar", "quux, qix" (senza parentesi)

Lookbehind + lookahead + quantificatore lazy: estrae il contenuto dentro le parentesi senza includerle.

Combinare lookahead e lookbehind

L'uso congiunto di lookahead e lookbehind permette di isolare stringhe che si trovano all'interno di precisi tag o formati (es. estrarre il testo tra due tag senza includere i tag nel match finale). Ciò evita operazioni successive di pulizia delle stringhe.

Prova tu

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

Estrai il valore di ogni assegnazione `chiave=valore` dal log: SOLO i valori (non chiavi, non `=`). I valori possono contenere lettere e cifre.

Chargement de l'éditeur…
Afficher l'indice

Sposta `=` dentro un lookbehind (?<==): cosi' il match contiene solo il valore.

Solution disponible après 3 tentatives

Esercizio di ripasso

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

Verifica quali parole hanno almeno UNA maiuscola E almeno UNA cifra (qualsiasi ordine), trovandole nel testo.

Chargement de l'éditeur…
Afficher l'indice

Doppio lookahead all'inizio: (?=\\w*[A-Z])(?=\\w*\\d). Poi consuma la parola con \\w+.

Solution disponible après 3 tentatives

Sfida aggiuntiva

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

Estrai solo le cifre numeriche racchiuse esattamente tra parentesi tonde, es. estrai `102` da `(102)` senza catturare le parentesi.

Chargement de l'éditeur…
Afficher l'indice

Combina un lookbehind positivo (?<=\( ) per la parentesi aperta e un lookahead positivo (?=\) ) per quella chiusa.

Solution disponible après 3 tentatives