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

Lookahead positivo: `(?=...)`

Un lookahead positivo (?=...) e' un'asserzione a larghezza zero: verifica che dopo la posizione corrente segua un certo pattern, ma non consuma quei caratteri.

Code
Pattern: \d+(?= euro)
Sample:  Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
                ^^^                 ^^

Il lookahead (?= euro) richiede che dopo le cifre ci sia euro, ma il match include solo le cifre. 75 dollari non matcha (manca euro).

Perche' "larghezza zero"

Pensa al lookahead come a una condizione sulla posizione, non come a un pezzo del match:

  • Il match si ferma prima del lookahead.
  • La posizione "dopo il match" e' l'inizio del testo guardato dal lookahead.
  • Il prossimo tentativo di match con flag g ripartira' da li'.

Questo lo rende perfetto per estrarre valori senza il contesto: prezzi senza la valuta, parole prima di una punteggiatura, ecc.

Caratteristiche dei lookahead ed avanzamento zero

Il lookahead positivo (?=...) garantisce che il pattern specificato segua il punto corrente, ma la scansione del testo riparte dalla posizione antecedente al lookahead. Questo previene il "consumo" di parti del testo che potrebbero servire per match successivi.

Prova tu

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

Estrai SOLO le cifre dei prezzi in euro (le sequenze di numeri seguite da ' euro'). Niente valuta nel match.

Chargement de l'éditeur…
Afficher l'indice

Sposta ' euro' dentro un lookahead (?= euro): la stringa non sara' parte del match.

Solution disponible après 3 tentatives

Esercizio di ripasso

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

Trova ogni parola immediatamente seguita da due punti `:` (ma senza includere i due punti nel match).

Chargement de l'éditeur…
Afficher l'indice

Stessa logica: il `:` non e' nel match, ma e' una condizione di posizione.

Solution disponible après 3 tentatives

Sfida aggiuntiva

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

Trova ogni nome di parola (es. nome di funzione) seguito immediatamente da una parentesi tonda aperta `(`, escludendo la parentesi dal match.

Chargement de l'éditeur…
Afficher l'indice

Sposta \( (parentesi tonda aperta escapata) all'interno del lookahead positivo (?=...).

Solution disponible après 3 tentatives