Riepilogo delle Espressioni Regolari

Panoramica

Riferimento pratico per l’uso sicuro e portabile delle espressioni regolari.
Nessun flag di contesto ((?s), (?m), (?i)), solo pattern compatibili tra sistemi e strumenti diversi.


Differenze di newline tra ambienti

OS Codice newline Pattern consigliato Nota
Windows \r\n \r?\n Compatibile con CRLF/LF
macOS / Linux \n \r?\n Unico pattern per entrambi

Nota chiave:

  • Usa sempre \r?\n per rilevare o sostituire newline in modo cross-platform.
  • Per catturare blocchi che includono newline, usa (?:.|\r|\n) (dato che . non cattura newline).

Parte 1: Sintassi di base (Tabella compatta)

1-1. Classi di caratteri e intervalli

Sintassi Significato Esempio Risultato
. Qualsiasi carattere eccetto newline a.c / abc abc
[abc] Uno tra a, b, c bag a
[^0-9] Qualsiasi non cifra a1 a
[A-Z0-9] Lettera maiuscola o numero X8z X,8

1-2. Quantificatori

Sintassi Significato Esempio Risultato
* 0 o più ripetizioni goooogle goooo
+ 1 o più ripetizioni google oo
? 0 o 1 ripetizione color colour entrambi
{n} Esattamente n volte a{3} / aaa aaa
{n,} Almeno n volte a{2,} / aaaa aaaa
{n,m} Da n a m volte a{2,4} / aaaaa aaaa

1-3. Ancore di posizione

Sintassi Significato Esempio Risultato
^abc Inizio linea abc\nzabc abc (prima linea)
abc$ Fine linea zabc\nabc entrambi i abc finali
\bword\b Parola isolata word words word
\Bing Non ai confini di parola ringing seconda ing

1-4. Abbreviazioni e metacaratteri

Sintassi Significato Esempio Risultato
\d Cifra [0-9] ver2.10 2,10
\D Non cifra a1 a
\w Lettera, cifra o underscore a_b-1 a_b
\W Non alfanumerico a# #
\s Spazio/tab/newline a b spazio
\S Non spazio a b a,b
\t Tabulazione a\tb a[TAB]b

1-5. Escape di caratteri speciali

Sintassi Significato Esempio Risultato
\. Punto letterale a.c a.c
\* Asterisco letterale a*b a*b
\+ Segno + a+b a+b
\? Punto interrogativo what? what?
\( \) Parentesi (test) (test)
| Barra verticale `a b`
\\ Backslash C:\\path \\
\^ Accento circonflesso ^abc ^abc
\$ Simbolo $ total$ $
\[ \] Parentesi quadre [abc] [abc]
\{ \} Parentesi graffe {a,b} {a,b}

Parte 2: Gruppi, alternative e lookaround

Sintassi Scopo Esempio Risultato
(abc)+ Ripetizione di gruppo abcabcx abcabc
`(?:jpg png)` OR non catturante file.png
`foo bar` Alternativa bar
\d+(?=€) Cifre prima di € Totale 100€ 100
^(?!.*error).* Linee senza "error" ok\nerror ok
(?<=€)\d+ Cifre dopo € €300 300
(?<!Mr\.)\s[A-Z] Maiuscola non preceduta da “Mr.” Ms. Alice A

Parte 3: Pattern multilinea

Scopo Pattern Esempio Risultato
Blocco HTML `<div>(?:. \r \n)*?</div>`
Log tra timestamp `^[\d{4}-\d{2}-\d{2} [\d:]+](?:. \r \n)*?(?=^[\d{4}-\d{2}-\d{2}
Blocco di codice Markdown “ “`(?:. \r \n)*?“` “
Commento multilinea `/*(?:. \r \n)*?*/`

Parte 4: Pattern utili (estrazioni e negazioni)

Scopo Pattern Esempio Risultato
Solo cifre ^\d+$ 123 123
Solo alfanumerico ^[A-Za-z0-9]+$ user01 user01
Email (semplice) ^[\w.-]+@[\w.-]+\.[A-Za-z]{2,}$ a@b.com a@b.com
URL https?://[\w.-]+\.[A-Za-z]{2,}(/[\w./?=&%-]*)? https://ex.com/a https://ex.com/a
Data ISO \d{4}-\d{2}-\d{2} 2025-10-30 2025-10-30
Numero telefonico internazionale \+\d{1,3}[\s-]?\d{1,14} +39 340 123 4567 intero numero
Password robusta ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$ Abcd1234 completa
Commento HTML `<!–(?:. \r \n)*?–>`
Linee senza "error" ^(?!.*error).* ok\nerror ok

Parte 5: Esempi di sostituzione

Operazione Pattern Sostituzione Input Output
Invertire parole (\w+)\s+(\w+) ${2} ${1} John Doe Doe John
Cambiare separatore ; , a;b;c a,b,c
Unificare spazi multipli \s{2,} a b a b
Rimuovere tag HTML <[^>]+> <p>a</p> a
Trim spazi `^\s+ \s+$` a
Newline → spazio \r?\n a\nb a b
Rimuovere commenti // //.*$ x=1;//note x=1;
Uniformare date (\d{4})/(\d{2})/(\d{2}) ${1}-${2}-${3} 2025/10/30 2025-10-30
Comprimere righe duplicate ^(.*)(\r?\n\1)+$ ${1} righe identiche singola riga

Conclusione

Le espressioni regolari sono strumenti potenti e portabili, utili per analisi log, pulizia dati e automazione testuale in ambienti multipiattaforma.