Le espressioni regolari (regex o regexp) sono un potente strumento per trovare, sostituire e convalidare il testo utilizzando modelli. Sono utilizzati in tutti i linguaggi di programmazione, negli editor di testo e nella riga di comando. Sebbene le espressioni regolari possano sembrare complicate a prima vista, i concetti di base sono piuttosto semplici. In questa guida passeremo dalle nozioni di base alle tecniche avanzate.
Cosa sono le espressioni regolari
Un'espressione regolare รจ una sequenza di caratteri che descrive uno schema di testo. Ad esempio, l'espressione \d{3}-\d{2}-\d{2} descrive un numero di telefono nel formato "123-45-67". Invece di cercare un testo specifico, l'espressione regolare ti consente di cercare in base al modello, qualsiasi testo che corrisponda a un determinato formato.
Regex sono supportati in tutti i principali linguaggi di programmazione: JavaScript, Python, PHP, Java, C#, Go, Ruby e altri. La sintassi รจ sostanzialmente la stessa, anche se esistono lievi differenze tra le implementazioni.
Sintassi di base
Literal characters
L'espressione regolare piรน semplice รจ solo testo. L'espressione hello troverร la parola "ciao" nel testo. La maggior parte dei simboli รจ auto-corrispondente.
Metacaratteri
I caratteri speciali hanno un significato speciale nell'espressione regolare:
.โ qualsiasi singolo carattere (tranne il ritorno a capo)^รจ l'inizio della riga$โ fine riga\dโ qualsiasi numero (0-9)\wโ qualsiasi lettera, numero o carattere di sottolineatura\sโ carattere spazio (spazio, tabulazione, nuova riga)\bโ confine di parola
Le lettere maiuscole significano il contrario: \D non รจ un numero, \W non รจ una lettera, \S non รจ uno spazio.
Classi di caratteri
Le parentesi quadre definiscono il set di caratteri:
[abc]โ simbolo a, b o c[a-z]โ qualsiasi lettera latina minuscola[A-Z0-9]โ lettera maiuscola o numero[^abc]โ qualsiasi carattere eccetto a, b, c[ะฐ-ัะ-ะฏัะัะัะาา]โ Lettere ucraine
Quantificatori
I quantificatori determinano il numero di ripetizioni:
*โ 0 o piรน volte+โ 1 o piรน volte?โ 0 o 1 volta{3}โ esattamente 3 volte{2,5}โ da 2 a 5 volte{3,}โ 3 o piรน volte
Esempi: \d+ - uno o piรน numeri, [a-z]{2,4} - da 2 a 4 lettere minuscole.
Gruppi e alternative
Raggruppamento
Le parentesi () raggruppano parti di un'espressione e catturano il testo trovato:
(\d{2})-(\d{2})-(\d{4})โ data con tre gruppi (giorno, mese, anno)(?:abc)โ gruppo senza acquisizione (per velocitร )
Alternative
Il simbolo | significa "o":
cat|dogโ "gatto" o "cane"(Mon|Tue|Wed|Thu|Fri)โ qualsiasi giorno lavorativo
Modelli tipici
Email address
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
URL
https?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/[^\s]*)?
Telefono (Ucraina)
\+?380[\s-]?\d{2}[\s-]?\d{3}[\s-]?\d{2}[\s-]?\d{2}
Indirizzo IPv4
\b(?:\d{1,3}\.){3}\d{1,3}\b
Data (GG.MM.AAAA)
(?:0[1-9]|[12]\d|3[01])\.(?:0[1-9]|1[0-2])\.\d{4}
Guardare avanti e guardare dietro
Costrutti avanzati per verificare il contesto senza includerlo nel risultato:
- XUVBLOCK_0036__ โ lookahead positivo: il testo dopo deve corrispondere al pattern
(?!...)- lookahead negativo: il testo successivo NON deve corrispondere a(?
Esempio: \d+(?= ะณัะฝ) โ troverร i numeri prima di "UAH" (UAH 100 โ acquisisce "100").
Flag (modificatori)
iโ senza distinzione tra maiuscole e minuscolegโ ricerca globale (trova tutte le corrispondenze,non solo il primo)m- modalitร multilinea (^e$funzionano per linea)- XUVBLOCK_0046__ โ il punto
.corrisponde anche al ritorno a capo
Suggerimenti per un utilizzo efficace
- Inizia in modo semplice: scrivi prima un modello di base, poi diventa piรน complesso
- Test su dati diversi - testa sia casi positivi che negativi
- Evita l'aviditร - usa
*?e+?per quantificatori pigri - Commenta le espressioni complesse: usa il flag
xper le espressioni regolari leggibili - Non analizzare HTML con espressioni regolari - usa il parser DOM
Esercitazione: testare regex online
Il modo migliore per imparare le espressioni regolari รจ la pratica. Utilizza il nostro regex tester per evidenziare le corrispondenze in tempo reale e aiutarti a capire come funziona il tuo modello.
Conclusion
Le espressioni regolari sono uno strumento indispensabile per qualsiasi sviluppatore. Ti consentono di cercare, convalidare e trasformare il testo in modo efficiente. Inizia con schemi semplici, impara gradualmente nuove costruzioni e col tempo l'espressione regolare diventerร il tuo potente alleato quando lavori con dati di testo.