Le regex, spiegate
senza misteri.
Una guida pratica per capire cosa sono le espressioni regolari, come si leggono e come trasformarle in uno strumento quotidiano.
Cosa sono le espressioni regolari?
Unaregular expression, abbreviata inregex, è un piccolo linguaggio per descrivere uno schema all’interno di un testo. Non dice quale parola cercare, ma quali caratteristiche deve avere ciò che stai cercando.
Una ricerca normale trova la parolaordine. Una regex può trovaretutti i codici ordine composti da tre lettere, un trattino e quattro cifre, anche se non conosci in anticipo il loro valore.
/\b[A-Z]{3}-\d{4}\b/gTestoOrdini: WEB-2048 e APP-7310
RisultatoWEB-2048 · APP-7310
Il testo cambia, ma tutto ciò che rispetta la forma dello stampino viene riconosciuto.
L’anatomia di una regex
Prendiamo un codice prodotto: deve iniziare con due lettere maiuscole, continuare con quattro cifre e terminare lì.
^inizio[A-Z]maiuscola{2}2 volte\dcifra{4}4 volte$fineLetta ad alta voce diventa: “dall’inizio alla fine, trova esattamente due maiuscole seguite da quattro cifre”. Il segreto è smontare sempre una regex in piccoli blocchi.
I mattoni fondamentali
I metacaratteri sono simboli con un significato speciale. Bastano questi pochi elementi per risolvere una grande parte dei casi reali.
| Simbolo | Significato | Esempio | Trova |
|---|---|---|---|
. | Qualsiasi carattere | c.t | cat, cot, cut |
\d | Una cifra da 0 a 9 | \d{2} | 07, 42 |
\w | Lettera, cifra o underscore | \w+ | utente_01 |
\s | Uno spazio o separatore | ciao\smondo | ciao mondo |
[abc] | Uno dei caratteri indicati | [aeiou] | una vocale |
[^abc] | Un carattere escluso | [^0-9] | non una cifra |
^ / $ | Inizio / fine del testo | ^OK$ | solo OK |
| | Alternativa logica | gatto|cane | gatto o cane |
Se cerchi un carattere che ha già un significato speciale, devi “escaparlo” con una barra inversa. Per esempio\. cerca un punto vero, mentre. indica qualsiasi carattere.
I quantificatori
I quantificatori specificano quante volte il blocco precedente può comparire. È qui che una ricerca rigida diventa flessibile.
*Zero o piùIl blocco è facoltativo e può ripetersi.
+Una o piùDeve esserci almeno una occorrenza.
?Zero o unaRende facoltativo un singolo blocco.
{n,m}Da n a mDefinisce un intervallo preciso.
/\+?39\s?\d{9,10}/gTestoChiamami al +39 3471234567
Risultato+39 3471234567
Gruppi, alternative e riferimenti
Le parentesi() raggruppano più elementi come se fossero un solo blocco. Servono per applicare un quantificatore, scegliere tra alternative o catturare una parte del risultato.
(rosso|verde|blu)accetta uno dei tre colori;(ab)+trova ab, abab, ababab e così via;(?:https?://)?gruppo non catturante e facoltativo;(\w+)@([\w.-]+)cattura separatamente nome e dominio.
JavaScript, Python, PHP e Java condividono le basi, ma possono differire per flag, delimitatori e funzioni avanzate.
A cosa servono davvero?
Cercare
Trova email, codici, date o parole con una determinata forma in grandi quantità di testo.
Validare
Controlla che un input rispetti un formato. La validazione completa richiede spesso anche logica applicativa.
Sostituire
Riformatta numeri, ripulisce spazi, rinomina file o trasforma dati usando i gruppi catturati.
Estrarre
Separa informazioni strutturate da log, documenti, URL e risposte testuali.
Le trovi negli editor, nei terminali, nei fogli di calcolo, negli analytics e in quasi ogni linguaggio. Sono perfette per riconoscere unaforma testuale; non sono invece la scelta giusta per interpretare strutture profondamente annidate come HTML complesso.
Gli errori più comuni
Essere troppo permissivi. .* può catturare molto più del previsto. Parti dal caso più specifico possibile.
Dimenticare i confini. Usa ^, $ o \b per evitare corrispondenze parziali.
Testare solo il caso ideale. Prova input validi, non validi, vuoti, lunghi e con caratteri inattesi.
Voler fare tutto con una regex. Un pattern leggibile più un controllo nel codice è spesso più sicuro di una regex enorme.
Una regex riconosce il formato di una data o email, ma non conferma che la data sia possibile o la casella attiva.
Un metodo pratico in 5 passi
- 1Scrivi la regola in italiano
Definisci con precisione cosa deve essere accettato e cosa no.
- 2Dividila in blocchi
Inizio, caratteri consentiti, quantità, separatori e fine.
- 3Traduci un blocco alla volta
Costruisci progressivamente, senza partire da una regex gigante.
- 4Testa esempi e controesempi
Ogni regola dovrebbe avere casi che passano e casi che falliscono.
- 5Semplifica e documenta
La regex migliore funziona e resta comprensibile anche tra sei mesi.
Costruisci la tua prima regex.
Scegli cosa vuoi riconoscere: il configuratore traduce le tue scelte in sintassi e ti mostra subito il risultato.