← Tutti gli strumenti

Tester di Espressioni Regolari

Crea, testa e correggi espressioni regolari in tempo reale sul tuo testo nel browser. Impara classi di caratteri, quantificatori, ancore, gruppi e flag.

Regex Tester: costruisci e debugga pattern sul tuo testo

Un'espressione regolare è un piccolo linguaggio per descrivere la forma del testo. Invece di chiedere "c'è esattamente questa parola qui?", una regex ti permette di chiedere "c'è una stringa che assomiglia a questo?" Ed è questo che la rende potente per trovare, validare, estrarre e sostituire testo negli editor di codice, nei file di log, negli input dei form e negli script. È anche ciò che la rende facile da sbagliare, perché un pattern che sembra corretto nella tua testa può silenziosamente far corrispondere troppo, troppo poco, o niente affatto.

Ecco perché testare in modo interattivo è meglio che indovinare. Quando digiti un pattern e vedi le corrispondenze illuminarsi in tempo reale nel testo di esempio, ottieni un feedback istantaneo: vedi cosa è stato catturato, cosa è sfuggito e quale gruppo di cattura ha preso quale pezzo. Il nostro Regex Tester funziona interamente nel tuo browser. Il tuo pattern e il tuo testo di esempio non lasciano mai la pagina, quindi puoi incollare righe di log, email o dati di produzione senza inviare nulla a un server.

Filtro ciano luminoso che cattura specifici token dorati da un flusso di dati su sfondo blu indaco scuro
Una regex agisce come un filtro, selezionando solo i token che corrispondono al tuo pattern.

Gli elementi fondamentali da conoscere

La maggior parte dei pattern quotidiani è assemblata da un piccolo insieme di componenti. Imparali e riuscirai a leggere la maggior parte delle regex che incontri.

Le classi di caratteri descrivono un insieme di caratteri ammessi. [aeiou] corrisponde a qualsiasi vocale singola, [0-9] corrisponde a una cifra, e [a-zA-Z] corrisponde a una lettera. Un accento circonflesso all'interno delle parentesi nega l'insieme, quindi [^0-9] significa "qualsiasi carattere che non è una cifra." Le abbreviazioni risparmiano scrittura: \d è una cifra, \w è un carattere di parola (lettere, cifre, underscore), \s è uno spazio bianco, e il punto . corrisponde a quasi qualsiasi carattere singolo.

I quantificatori indicano quante volte il componente precedente può ripetersi. * significa zero o più, + significa uno o più, e ? significa zero o uno (opzionale). Per conteggi esatti, {3} significa esattamente tre e {2,4} significa da due a quattro. Quindi \d{4} corrisponde a un anno a quattro cifre e colou?r corrisponde a entrambe le grafie.

Le ancore fissano un pattern a una posizione piuttosto che a un carattere. ^ corrisponde all'inizio del testo, $ corrisponde alla fine, e \b indica un confine di parola. Il pattern ^Error corrisponde solo alle righe che iniziano con "Error", il che è esattamente quello che vuoi quando stai analizzando i log.

I gruppi racchiudono parte di un pattern tra parentesi, sia per applicare un quantificatore a più caratteri contemporaneamente, sia per catturare il testo corrispondente per il riutilizzo. In (\d{4})-(\d{2})-(\d{2}) ogni gruppo cattura una componente della data che puoi estrarre in seguito. L'alternanza con la barra verticale funziona come "oppure": cat|dog|fish corrisponde a una qualsiasi delle tre parole.

Pattern che userai davvero

Pochi compiti ricorrenti coprono la maggior parte del lavoro reale. Per catturare qualcosa di simile a un'email, [\w.+-]+@[\w-]+\.[\w.-]+ è un punto di partenza pragmatico; la validazione completa delle email secondo la specifica formale è notoriamente complicata, e un pattern permissivo è di solito la scelta giusta per evidenziare i candidati piuttosto che rifiutare gli utenti.

Per i numeri, \d+ cattura sequenze di cifre, mentre -?\d+(\.\d+)? corrisponde a negativi opzionali e decimali. Per eliminare gli spazi iniziali e finali, fai corrispondere ^\s+|\s+$ e sostituiscilo con niente. Per trovare parole duplicate, il pattern con riferimento all'indietro \b(\w+)\s+\1\b corrisponde a una parola seguita da se stessa, dove \1 fa riferimento al primo gruppo catturato.

Parole selezionate che brillano di oro ed evidenziate all'interno di un fiume di particelle di testo ciano su sfondo navy scuro
L'evidenziazione in tempo reale mostra esattamente quali parti del tuo testo corrispondono al pattern.

I flag cambiano il comportamento del matching

I flag sono interruttori che modificano l'intero pattern. Il flag global (g) trova tutte le corrispondenze invece di fermarsi alla prima, il che è ciò che vuoi quando evidenzi tutte le occorrenze. Il flag case-insensitive (i) fa sì che error corrisponda sia a "Error" che a "ERROR". Il flag multiline (m) cambia ^ e $ in modo che corrispondano all'inizio e alla fine di ogni riga, e non solo dell'intero testo, il che è essenziale per il lavoro riga per riga sui log. Altri flag utili includono s (dotall, che permette al punto di corrispondere alle newline) e u per la gestione completa di Unicode.

Le varianti differiscono leggermente per linguaggio

Regex è una famiglia di dialetti, non uno standard fisso unico. JavaScript, Python, PCRE (PHP), Java, .NET, Go e Rust concordano sulla sintassi di base descritta sopra, ma divergono ai margini: il supporto al lookbehind, la sintassi per i gruppi con nome ((?<name>...) contro (?P<name>...)), le proprietà Unicode e i flag disponibili variano tutti. Un pattern che funziona in un motore potrebbe richiedere una piccola modifica in un altro, quindi conviene testarlo con il motore che effettivamente utilizzerai. Una volta messo a punto il pattern, i nostri altri strumenti per sviluppatori e strumenti di testo possono aiutare con il lavoro circostante di pulizia, codifica e trasformazione dei dati che hai appena trovato.

Domande frequenti

Il mio testo viene inviato a un server?

No. Il Regex Tester funziona interamente nel tuo browser. Il tuo pattern e il testo di esempio rimangono sul tuo dispositivo e non vengono mai caricati, quindi è sicuro incollare dati sensibili.

Quale variante di regex usa questo strumento?

Usa il motore regex JavaScript integrato nel tuo browser. La sintassi di base corrisponde a quella che conosci dalla maggior parte dei linguaggi, anche se alcune funzionalità avanzate differiscono leggermente da PCRE, Python o .NET.

Qual è la differenza tra matching greedy e lazy?

Per impostazione predefinita, i quantificatori sono greedy e catturano il più possibile. Aggiungere un punto interrogativo li rende lazy, in modo che catturino il meno possibile. Per esempio, il pattern punto stella è greedy, mentre punto stella punto interrogativo è lazy.

Come faccio a far corrispondere un carattere speciale letterale?

Fai l'escape con una barra rovesciata. Per far corrispondere un punto letterale, scrivi barra rovesciata punto. Lo stesso vale per altri metacaratteri come parentesi, parentesi quadre, il segno più e il punto interrogativo.

Perché il mio pattern non trova nessuna corrispondenza?

Le cause comuni sono un flag global mancante, ancore che fissano la corrispondenza nella posizione sbagliata, un carattere speciale senza escape, o quantificatori greedy che superano il confine atteso. Testa pezzo per pezzo per trovare il responsabile.

Posso catturare parti della corrispondenza?

Sì. Racchiudi una sezione del pattern tra parentesi per creare un gruppo di cattura. Ogni gruppo viene riportato separatamente, il che ti permette di estrarre campi come anno, mese e giorno da una data.