Skip to content

Cheat sheet sulle espressioni regolari

Corrispondenza caratteri

[abc] Corrisponde a qualsiasi carattere tra a, b o c
[^abc] Non corrisponde ai caratteri a, b o c. Il simbolo “^” è efficace solo se appare come primo carattere
[a-g] Corrisponde a qualsiasi carattere nell’intervallo a-g
[^a-g] Non corrisponde a nessun carattere nell’intervallo a-g
[H-N] Corrisponde a qualsiasi carattere nell’intervallo H-N
[0-9] Corrisponde a qualsiasi cifra nell’intervallo 0-9
[a-gH-N] Corrisponde a qualsiasi carattere negli intervalli a-g o H-N
Wildcard:
. [^\n\r], corrisponde a qualsiasi carattere eccetto l’interruzione di riga
\s Spazio bianco: interruzione di riga, tabulazione, spazio, ecc.
\S [^\s] (Qualsiasi cosa tranne uno spazio bianco)
\d Cifra: [0-9]
\D [^\d] (Qualsiasi cosa tranne una cifra)
\w Carattere di parola: [0-9A-Za-z_]
\W [^\w] (Qualsiasi cosa tranne un carattere di parola)

Gruppi di corrispondenza

(a b)
(…) Gruppo di cattura
(?:…) Gruppo non di cattura
(?<name>…) o (?’name’…) Gruppo di cattura nominato, “name” può essere personalizzato
(?(condition)true_regex false_regex)

group(0) viene utilizzato per ottenere l’intera stringa corrispondente, mentre group(>0) può estrarre sottogruppi di cattura dal risultato globale.

Nota: i gruppi di cattura nominati sono supportati solo a partire da Java 1.7 (passando la stringa “name” come argomento al metodo group). JS e Python non supportano ancora nativamente i gruppi di cattura nominati.

Intervalli di frequenza (Quantificatori)

{3} L’elemento precedente appare esattamente 3 volte, equivalente a {3,3}
{3,6} L’elemento precedente appare da 3 a 6 volte
{3,} L’elemento precedente appare almeno 3 volte
{0,6} L’elemento precedente appare al massimo 6 volte
Wildcard:
* {0,} (Zero o più)
+ {1,} (Uno o più)
? {0,1} (Zero o uno)
\w* Modalità avida (Greedy)
\w*? Modalità non avida

Ancore (Posizionatori)

^ Inizio della stringa
$ Fine della stringa
\b Boundary, confine di parola
\B Non è un confine di parola
Asserzioni di posizione (Lookaround):
(?=exp) Asserzione positiva in avanti (suffisso exp)
(?<=exp) Asserzione positiva all’indietro (prefisso exp)
(?!exp) Asserzione negativa in avanti (nessun suffisso exp)
(?<!exp) Asserzione negativa all’indietro (nessun prefisso exp)

\b(\w+)\b è equivalente a (?<=\W?)(\w+)(?=\W?)