Vai al contenuto
eLearner.app
Modulo 6 · Lezione 4 di 424/32 nel corso~12 min
Lezioni del modulo (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

Esercizio#regex.m6.l4.e1
Tentativi: 0Caricamento…

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

Caricamento editor…
Mostra suggerimento

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

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#regex.m6.l4.e2
Tentativi: 0Caricamento…

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

Caricamento editor…
Mostra suggerimento

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

Soluzione disponibile dopo 3 tentativi

Sfida aggiuntiva

Esercizio#regex.m6.l4.e3
Tentativi: 0Caricamento…

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

Caricamento editor…
Mostra suggerimento

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

Soluzione disponibile dopo 3 tentativi