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