Vai al contenuto
eLearner.app
Modulo 1 · Lezione 1 di 41/32 nel corso~8 min
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.

Code
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 12 e 38).

Le regex sono per default case-sensitive: ciao non matcha CiaoCIAO. 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

Esercizio#regex.m1.l1.e1
Tentativi: 0Caricamento…

Trova tutte le occorrenze esatte (case-sensitive) della parola `ciao` nel sample. Suggerimento: ricordati la flag `g`.

Caricamento editor…
Mostra suggerimento

Il pattern e' la parola stessa. Le maiuscole non devono matchare: niente flag i.

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#regex.m1.l1.e2
Tentativi: 0Caricamento…

Trova tutte le occorrenze della parola `errore` nel testo, ignorando maiuscole e minuscole.

Caricamento editor…
Mostra suggerimento

Stessa parola come pattern, ma aggiungi la flag i (case-insensitive) oltre a g.

Soluzione disponibile dopo 3 tentativi

Sfida aggiuntiva

Esercizio#regex.m1.l1.e3
Tentativi: 0Caricamento…

Identifica e colleziona tutte le occorrenze esatte della parola `WARNING` (maiuscolo, case-sensitive) nel testo di log di esempio.

Caricamento editor…
Mostra suggerimento

Cerca direttamente la stringa letterale WARNING, facendo attenzione a non attivare il flag i.

Soluzione disponibile dopo 3 tentativi