Passer au contenu principal
eLearner.app
Module 1 · Leçon 3 sur 43/32 dans le cours~8 min
Leçons du module (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).

Code
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.

Code
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

Exercice#regex.m1.l3.e1
Tentatives : 0Chargement…

Trova ogni triplette di caratteri delimitate da parentesi tonde, es. `(abc)`, `(xyz)`. Usa il jolly per i 3 caratteri interni.

Chargement de l'éditeur…
Afficher l'indice

Tre punti per tre caratteri qualsiasi. Le parentesi sono meta-caratteri: vanno escapate con \\.

Solution disponible après 3 tentatives

Esercizio di ripasso

Exercice#regex.m1.l3.e2
Tentatives : 0Chargement…

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).

Chargement de l'éditeur…
Afficher l'indice

Senza flag s, il punto si ferma a fine riga: aggiungila. La forma .*? (lazy) ferma il match al primo [FINE].

Solution disponible après 3 tentatives

Sfida aggiuntiva

Exercice#regex.m1.l3.e3
Tentatives : 0Chargement…

Trova tutte le sequenze di 3 caratteri che iniziano con `c` e finiscono con `t` (es. `cat`, `cot`, `c-t`).

Chargement de l'éditeur…
Afficher l'indice

Il pattern usa il punto '.' per rappresentare il carattere centrale jolly.

Solution disponible après 3 tentatives