Vai al contenuto principale
FreeOnlineTools Go
Italiano
Spiegazione

Cos'è un'espressione regolare? Una spiegazione completa

Di FreeOnlineTools Team · 2026-09-02 aggiornata

Risposta rapida

Un'espressione regolare è un modello che descrive un insieme di stringhe. Utilizza caratteri letterali (corrispondono a se stessi) e metacaratteri (*, +, ?, ., ^, $, [], (), {}, |, \) con significati speciali. Regex viene utilizzato per la convalida, la ricerca, l'estrazione e la sostituzione. Utilizza il nostro Regex Tester gratuito per testare i modelli rispetto al testo nel tuo browser.

Introduzione

Un'espressione regolare (regex o regexp) è una sequenza di caratteri che definisce un modello di ricerca. Il modello viene utilizzato dagli algoritmi di ricerca di stringhe per trovare, abbinare o sostituire il testo. Le espressioni regolari hanno avuto origine nella teoria del linguaggio formale negli anni '50 (Stephen Kleene) e sono state adottate negli strumenti di testo Unix (grep, sed, awk) negli anni '70. Oggi, le espressioni regolari sono integrate praticamente in ogni linguaggio di programmazione ed editor di testo. Regex è potente: può convalidare formati di posta elettronica, estrarre dati dai log e trovare modelli complessi, ma la sintassi è densa e notoriamente difficile da leggere.

Passo dopo passo

  1. Comprendere i caratteri letterali e i metacaratteri

    I caratteri letterali (a, b, 1, @) corrispondono a se stessi. I metacaratteri hanno significati speciali: . corrisponde a qualsiasi carattere, * significa zero o più, + significa uno o più, ? significa zero o uno, ^ inizia la corrispondenza, $ termina la corrispondenza.

  2. Impara le classi dei personaggi

    Le parentesi quadre [] definiscono una classe di caratteri: [aeiou] corrisponde a qualsiasi vocale, [0-9] corrisponde a qualsiasi cifra, [^0-9] corrisponde a qualsiasi non cifra. Classi abbreviate: \d (cifra), \w (carattere di parola), \s (spazi bianchi) e le loro negazioni maiuscole.

  3. Utilizzare quantificatori

    I quantificatori specificano quante volte un pattern si ripete: * (0+), + (1+), ? (0 o 1), {n} (esattamente n), {n,} (n+), {n,m} (da n a m). Avido per impostazione predefinita; aggiungere ? per la corrispondenza pigra (ad esempio, *?).

  4. Gruppo e ancoraggio

    Le parentesi () creano gruppi di acquisizione. Alternanza | corrisponde a entrambi i lati (gatto|cane). Le ancore ^ e $ corrispondono all'inizio e alla fine della stringa. Usali per costruire modelli complessi da quelli più semplici.

Esempi

Abbina uno schema simile a un'e-mail

Ingresso: Pattern: [a-z]+@[a-z]+\.[a-z]+

Produzione: Corrispondenze: [email protected], [email protected]

Corrisponde al formato del numero di telefono

Ingresso: Pattern: \d{3}-\d{3}-\d{4}

Produzione: Matches: 555-123-4567

Estrai coppie chiave-valore

Ingresso: Pattern: (\w+)=(\w+)

Produzione: Matches 'key=value' with group 1 as key, group 2 as value

Problemi comuni

  • L'abbinamento avido consuma eccessivamente —.* corrisponde il più possibile. Utilizzo .*? per la corrispondenza pigra per trovare la corrispondenza più breve.
  • Dimenticare l'escape dei caratteri speciali —., *, +, ?, ecc. sono speciali. Utilizzare \ per abbinarli letteralmente (ad esempio, \. corrisponde a un punto letterale).
  • Backtracking catastrofico: i modelli con quantificatori annidati (ad esempio, (a+)+) possono richiedere un tempo esponenziale su determinati input, causando attacchi ReDoS.
  • Corrispondenza eccessiva: senza ancore (^ e $), un modello corrisponde ovunque. Utilizzare ^...$ per trovare la corrispondenza con l'intera stringa.

Suggerimenti

  • Inizia in modo semplice e aggiungi la complessità in modo incrementale: eseguire il debug di una regex complessa tutta in una volta è molto difficile.
  • Utilizza un tester regex per sperimentare modelli rispetto a testo di esempio: visualizza le corrispondenze evidenziate in tempo reale.
  • Commenta le espressioni regolari complesse utilizzando la modalità estesa (flag /x in alcuni motori) o suddividile in parti con nome.
  • Utilizza il nostro Regex Tester per testare istantaneamente i pattern nel tuo browser: nessuna registrazione, completamente privato.

Strumenti correlati

Guide correlate

Riferimenti