Lezioni del modulo (1/4)
Pattern letterali
In una regex i caratteri alfanumerici "normali" matchano semplicemente sé
stessi: scrivi ciao come pattern e l'engine cercherà la sotto-stringa
ciao dentro al testo. Niente di più magico: una scansione da sinistra a
destra posizione per posizione.
Pattern: ciao
Sample: Buongiorno, ciao mondo! Ti dico anche ciao.
^^^^ ^^^^Il match porta sempre con sé due informazioni fondamentali:
- il testo matchato (qui
ciao); - l'indice (offset 0-based) in cui inizia nel sample (qui
12e38).
Le regex sono per default case-sensitive: ciao non matcha Ciao né
CIAO. Per ignorare il maiuscolo/minuscolo aggiungi la flag i (case-insensitive).
Come ragiona l'engine
L'engine regex analizza il testo un carattere alla volta. Quando cerca il pattern letterale ciao, cerca prima la lettera c. Se la trova, verifica se il carattere successivo è i, poi a, e infine o. Se uno di questi fallisce (mismatch), l'engine torna indietro (backtrack) alla posizione iniziale successiva e ricomincia a cercare la c.
Pattern letterali e flag g
Senza la flag g (global) l'engine si ferma al primo match trovato e arresta la ricerca. Con g attiva, prosegue fino alla fine della stringa e raccoglie tutti i match successivi. Nelle lezioni di questo corso attiveremo quasi sempre g: vogliamo vedere tutti i match presenti nel testo.
Prova tu
Trova tutte le occorrenze esatte (case-sensitive) della parola `ciao` nel sample. Suggerimento: ricordati la flag `g`.
Mostra suggerimento
Il pattern e' la parola stessa. Le maiuscole non devono matchare: niente flag i.
Soluzione disponibile dopo 3 tentativi
Esercizio di ripasso
Trova tutte le occorrenze della parola `errore` nel testo, ignorando maiuscole e minuscole.
Mostra suggerimento
Stessa parola come pattern, ma aggiungi la flag i (case-insensitive) oltre a g.
Soluzione disponibile dopo 3 tentativi
Sfida aggiuntiva
Identifica e colleziona tutte le occorrenze esatte della parola `WARNING` (maiuscolo, case-sensitive) nel testo di log di esempio.
Mostra suggerimento
Cerca direttamente la stringa letterale WARNING, facendo attenzione a non attivare il flag i.
Soluzione disponibile dopo 3 tentativi