Cos'è un'espressione regolare (regex)
Cosa sono le regex spiegate semplice: espressioni regolari, sintassi di base ed esempi pratici in Python e JavaScript per cercare e validare testo nel codice.
Prima o poi ti capita di dover controllare se un'email è scritta bene, estrarre tutti i numeri da un testo o sostituire una parola con un'altra ovunque appaia. Per questi compiti esiste uno strumento potentissimo e un po' criptico: le espressioni regolari, o regex.
In questo articolo ti spiego cosa sono le regex con parole semplici ed esempi pratici, così da toglierti la paura di quei simboli strani.
Cosa sono le regex in parole semplici
Un'espressione regolare (regex) è una sequenza di caratteri che descrive un pattern, cioè uno schema di testo da cercare, validare o sostituire all'interno di una stringa. In pratica è un mini-linguaggio per dire al computer "trovami tutto ciò che assomiglia a questo".
Invece di cercare una parola esatta, con le regex cerchi una forma: "una sequenza di cifre", "una parola che inizia per A", "un indirizzo email". È come una ricerca super-potenziata.
A cosa servono nella pratica
Le regex risolvono tre tipi di problemi:
- Validazione: controllare se un testo rispetta un formato (email, codice fiscale, numero di telefono).
- Ricerca: trovare tutte le occorrenze di un certo schema in un testo.
- Sostituzione: rimpiazzare tutto ciò che corrisponde a un pattern.
I mattoni di base
Vediamo i simboli più usati, quelli che ti servono nel 90% dei casi:
\dcorrisponde a una cifra (0-9)\wcorrisponde a una lettera, numero o underscore.corrisponde a qualsiasi carattere+significa "uno o più"*significa "zero o più"^indica l'inizio della stringa,$la fine[abc]corrisponde a uno tra a, b o c
Combinando questi mattoni costruisci pattern anche complessi.
Un esempio in Python
Estraiamo tutti i numeri presenti in una frase:
import re
testo = "Ho 3 mele, 12 banane e 7 arance"
numeri = re.findall(r"\d+", testo) # uno o più cifre
print(numeri) # ['3', '12', '7']
Il pattern \d+ significa "una sequenza di una o più cifre". La r davanti alla stringa serve a evitare problemi con i backslash.
Un esempio in JavaScript
Lo stesso concetto in JavaScript, per validare una semplice email:
const email = "[email protected]";
const pattern = /^[\w.]+@[\w.]+\.\w+$/;
console.log(pattern.test(email)); // true
Qui il pattern dice: una o più lettere/punti, poi una chiocciola, poi un dominio, poi un punto e l'estensione. Da ^ a $ controlliamo l'intera stringa.
Un avvertimento onesto
Le regex sono potenti ma diventano illeggibili in fretta. Un pattern complesso scritto sei mesi fa può sembrare geroglifici anche a chi l'ha scritto. Alcuni consigli:
- Commenta sempre le regex complicate.
- Non usarle per tutto: a volte una semplice funzione di stringa è più chiara.
- Testale con strumenti online prima di metterle in produzione.
C'è anche un detto famoso tra i programmatori: "se risolvi un problema con le regex, ora hai due problemi". È un'esagerazione, ma ricorda di non abusarne. Quando qualcosa non funziona, sapere fare debugging di una regex è metà del lavoro.
Dove le incontri
Le regex sono ovunque: nei motori di ricerca, nei filtri delle email, negli editor di codice quando cerchi e sostituisci, nei form di registrazione che validano i dati. Quasi tutti i linguaggi di programmazione le supportano con una sintassi molto simile, quindi impararle una volta ti serve ovunque.
In sintesi
Un'espressione regolare è un pattern che descrive uno schema di testo, utile per validare, cercare e sostituire stringhe. Bastano pochi simboli di base per coprire la maggior parte dei casi reali. Sono potenti, ma vanno usate con moderazione e sempre commentate quando si fanno complesse.
Vuoi imparare a usare le regex e tante altre tecniche pratiche con esercizi guidati? Le trovi spiegate passo passo nei corsi di CodeGrind.