Lezioni del modulo (3/4)
Il jolly: il punto `.`
Il punto . in regex e' il jolly: matcha qualunque carattere
singolo\u2026 con una sola eccezione importante: NON matcha il
newline (\n).
Pattern: c.t
Sample: cat cot cut c@t c\nt
^^^ ^^^ ^^^ ^^^Tre lettere: una c, un carattere qualsiasi, una t. Niente newline in
mezzo, quindi c\nt non viene matchato (di default).
Il punto e' utilissimo ma anche pericoloso: usato senza disciplina cattura
piu' di quanto vorresti. Combinato con i quantificatori del modulo 2 (.*,
.+?) e' la sorgente del 90% dei pattern che "non funzionano come pensavo".
Flag s: "dotAll"
Con la flag s (detta anche dotAll o single-line) il punto matcha
ogni carattere, newline compreso. Utile per estrarre blocchi che
attraversano piu' righe.
Pattern: <p>.*</p>
Flag: gs
Sample: <p>prima\nseconda</p>
^^^^^^^^^^^^^^^^^^^^^Limiti e comportamento del punto jolly
Il punto . è un jolly potente, ma per impostazione predefinita non matcha il carattere di a capo (\\n). Se vuoi che il punto matchi assolutamente tutto, incluso l'a capo, devi attivare la flag s (dotAll). Attenzione all'uso del punto con quantificatori (.*), poiché tende a consumare troppo testo (comportamento avido).
Prova tu
Trova ogni triplette di caratteri delimitate da parentesi tonde, es. `(abc)`, `(xyz)`. Usa il jolly per i 3 caratteri interni.
Mostra suggerimento
Tre punti per tre caratteri qualsiasi. Le parentesi sono meta-caratteri: vanno escapate con \\.
Soluzione disponibile dopo 3 tentativi
Esercizio di ripasso
Estrai il blocco fra `[INIZIO]` e `[FINE]`, che puo' attraversare piu' righe. Ti servira' la flag `s` per far matchare il punto anche ai newline, e la versione 'lazy' del quantificatore (`.*?`, modulo 2).
Mostra suggerimento
Senza flag s, il punto si ferma a fine riga: aggiungila. La forma .*? (lazy) ferma il match al primo [FINE].
Soluzione disponibile dopo 3 tentativi
Sfida aggiuntiva
Trova tutte le sequenze di 3 caratteri che iniziano con `c` e finiscono con `t` (es. `cat`, `cot`, `c-t`).
Mostra suggerimento
Il pattern usa il punto '.' per rappresentare il carattere centrale jolly.
Soluzione disponibile dopo 3 tentativi