DocumentiImmaginiMediaStrumenti PDF

Spiegatore Regex Online

Converti i pattern regex in italiano comprensibile, direttamente nel tuo browser.

//
1Start of string
2One of: A, -, Z, a, -, z, 0, -, 9, ., _, %, +, -, one or more times
3Literal "@"
4One of: A, -, Z, a, -, z, 0, -, 9, ., -, one or more times
5Escaped character: \.
6One of: A, -, Z, a, -, z, at least 2 times
7End of string
Processed in your browser

Spiegatore di espressioni regolari

Tutti i dialetti

Compatibile con pattern JavaScript, Python, PCRE, Java, Go e Ruby.

100% privato

L'analisi del pattern avviene nel tuo browser. I tuoi dati non lasciano mai il tuo dispositivo.

Spiegazione chiara

Ogni token del pattern spiegato in linguaggio semplice, con esempi di corrispondenza.

Istantaneo

Spiegazione in tempo reale mentre digiti. Nessuna registrazione, nessuna attesa.

Tre passaggi, senza complicazioni

1

Incolla la tua espressione regolare

Digita o incolla il pattern regex che vuoi capire, con o senza delimitatori.

2

Spiegazione istantanea

Lo strumento analizza il pattern e descrive in linguaggio semplice cosa fa ogni parte: gruppi, quantificatori, classi di caratteri e altro ancora.

3

Testa con testo reale

Inserisci del testo di esempio per vedere quali parti corrispondono al pattern in tempo reale.

Hai delle domande?

Un'espressione regolare e un linguaggio di pattern per cercare e manipolare il testo. Ti permette di descrivere con precisione un pattern: ad esempio, un numero di telefono, un indirizzo email o un URL. Il motore regex scansiona il testo cercando stringhe che corrispondono a quel pattern. Sono supportate da praticamente tutti i linguaggi di programmazione moderni.

Email: inizia con il cursore, poi lettere, numeri, punti e simboli, seguito dalla chiocciola, poi dominio, punto e TLD di almeno 2 caratteri. URL: https con s opzionale, doppio slash, dominio opzionale www, poi host e percorso. Telefono internazionale: segno piu opzionale seguito da cifre. Solo cifre: cursore, una o piu cifre, fine stringa. CAP USA: 5 cifre con eventuale suffisso di 4 cifre.

Le regex sono estremamente concise: ogni carattere ha un potenziale significato speciale. Il punto (.) corrisponde a qualsiasi carattere. L'asterisco (*) significa zero o piu volte. Le parentesi quadre ([]) definiscono classi di caratteri. Questa densita di informazioni fa si che un'espressione di 20 caratteri possa rappresentare regole molto complesse, ma la rende anche difficile da capire a prima vista senza pratica.

PCRE (Perl Compatible Regular Expressions) e lo standard de facto per PHP, Apache e nginx. JavaScript ha il proprio motore con alcune differenze: le versioni piu vecchie non supportano il lookbehind a lunghezza variabile e ha il flag /u per Unicode. Python usa il modulo re con sintassi simile a PCRE ma con alcune differenze, come \A e \Z per inizio e fine stringa. Go usa RE2, che non supporta i backreference per motivi di prestazioni. Java usa java.util.regex con sintassi POSIX estesa.

I caratteri con significato speciale in regex sono: punto, asterisco, segno piu, punto interrogativo, cursore, dollaro, parentesi graffe, parentesi quadre, barra verticale, parentesi tonde e backslash. Per usarli letteralmente, scappali con backslash. In JavaScript all'interno di una stringa, hai bisogno del doppio escape perche la stringa consuma gia un backslash. Molti linguaggi offrono funzioni dedicate come re.escape() in Python o preg_quote() in PHP.

Storia delle espressioni regolari (Ken Thompson 1968 e editor ed), teoria dei linguaggi formali e regex nella programmazione moderna

Le espressioni regolari traggono origine dalla teoria dei linguaggi formali sviluppata dal matematico Stephen Kleene negli anni '50, che defini gli insiemi regolari e la notazione algebrica per descriverli. Ken Thompson e stato il primo a implementare le regex nel software quando le integro nell'editor di testo Unix ed nel 1968 (e poi in grep, il cui nome deriva da global regular expression print). La sua implementazione usava la compilazione in codice macchina per una ricerca efficiente, una tecnica che ha gettato le basi per i moderni motori regex.

La diffusione di massa delle regex e avvenuta con Perl negli anni '80 e '90. Larry Wall le ha integrate nativamente nella sintassi del linguaggio, e PCRE (Perl Compatible Regular Expressions) e diventato lo standard de facto. POSIX ha formalizzato due livelli: BRE (Basic Regular Expressions) e ERE (Extended Regular Expressions) nello standard del 1992. Oggi praticamente tutti i linguaggi di programmazione includono il supporto per le regex: Python (modulo re), JavaScript (RegExp), Java (java.util.regex), Go (regexp con RE2), Ruby, PHP (preg_*), .NET e molti altri.

Le regex sono uno strumento a doppio taglio: estremamente potenti ma anche fonte di vulnerabilita. Il ReDoS (Regular Expression Denial of Service) e un tipo di attacco in cui un pattern regex mal scritto puo causare tempi di esecuzione esponenziali con certi input malevoli. Il motore RE2 di Google (usato in Go) e stato progettato specificatamente per garantire un tempo di esecuzione lineare, eliminando la possibilita di ReDoS al costo di non supportare i backreference. OWASP include il ReDoS nella sua lista di rischi di sicurezza nelle applicazioni web.