Lezioni del modulo (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.
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
gripartira' 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
Estrai SOLO le cifre dei prezzi in euro (le sequenze di numeri seguite da ' euro'). Niente valuta nel match.
Mostra suggerimento
Sposta ' euro' dentro un lookahead (?= euro): la stringa non sara' parte del match.
Soluzione disponibile dopo 3 tentativi
Esercizio di ripasso
Trova ogni parola immediatamente seguita da due punti `:` (ma senza includere i due punti nel match).
Mostra suggerimento
Stessa logica: il `:` non e' nel match, ma e' una condizione di posizione.
Soluzione disponibile dopo 3 tentativi
Sfida aggiuntiva
Trova ogni nome di parola (es. nome di funzione) seguito immediatamente da una parentesi tonda aperta `(`, escludendo la parentesi dal match.
Mostra suggerimento
Sposta \( (parentesi tonda aperta escapata) all'interno del lookahead positivo (?=...).
Soluzione disponibile dopo 3 tentativi