Vai al contenuto

Prova regex

Scrivi un’espressione regolare e un testo su cui provarla. Il motore è quello del browser, lo stesso di qualunque codice JavaScript: se è lì che la userai, quello che vedi qui è quello che otterrai.

Il testo resta sul tuo dispositivo: nessun upload

0 caratteri

Flag attivi: g. Si cambiano in «Opzioni avanzate».

Opzioni avanzate

Risultato

Incolla qualcosa qui accanto: il risultato compare mentre scrivi.

Come funziona

Il motore è quello del browser, cioè lo stesso di qualunque JavaScript: quello che funziona qui funziona nel tuo codice, se è JavaScript. Di ogni corrispondenza vedi posizione, riga e gruppi catturati, anche quelli con un nome. Certe espressioni impiegano un tempo enorme su testi costruiti male — «(a+)+b» su una fila di «a» non finisce mai — e qui dopo un secondo la ricerca si ferma e te lo diciamo, invece di bloccare la pagina. Safari rinuncia da solo anche prima, senza dirlo: lì vedi «Nessuna corrispondenza» anche quando una corrispondenza c’era. Se un’espressione così non trova niente in Safari, provala in un altro browser. Se succede a te, succederebbe anche al tuo programma: è il segnale di un’espressione da riscrivere.

Domande frequenti

Devo scrivere le barre /…/ e i flag?
No: scrivi solo l’espressione e accendi i flag con gli interruttori in «Opzioni avanzate». Se scrivi «/\d+/g», le barre e la g vengono cercate come testo. Le barre rovesciate si scrivono una volta sola, come fra due barre nel codice; dentro una stringa fra virgolette, come «new RegExp("\\d+")», nel codice vanno raddoppiate.
Un’espressione scritta per Python, PHP o Java funziona uguale?
Le basi sì, ma il sapore è quello di JavaScript. I gruppi con nome si scrivono «(?<nome>…)», non «(?P<nome>…)» come in Python; i quantificatori possessivi come «a++» e i gruppi atomici «(?>…)» non esistono; e «\A» e «\Z» non sono ancore: usa «^» e «$» senza il flag m.
Perché dice che l’espressione ci mette troppo?
Perché su quel testo il motore ha lavorato più di un secondo senza arrivare a una risposta, e la ricerca è stata fermata. Il caso tipico sono le ripetizioni annidate, come «(a+)+» o «(\w*)*»: se il testo quasi corrisponde, il motore prova tutti i modi di spartire i caratteri fra le due ripetizioni, e i modi raddoppiano a ogni carattere. Riscrivi l’espressione senza ripetere una ripetizione, per esempio «a+» al posto di «(a+)+». Un programma che la usasse su un testo così si bloccherebbe allo stesso modo. In Safari questo avviso non compare: il browser interrompe la ricerca da solo e risponde «Nessuna corrispondenza», anche se una c’era.
Quando serve la modalità Unicode (u)?
Quando usi classi come «\p{L}», che prende qualsiasi lettera, accentate comprese, o quando vuoi che il punto consideri un’emoji un carattere solo. È anche più severa: gli escape superflui, come «\-» fuori dalle parentesi quadre, diventano errori invece di passare in silenzio.
Posso provare anche una sostituzione?
No, qui si cerca soltanto. I gruppi elencati sotto ogni corrispondenza sono però esattamente quello che una sostituzione inserirebbe: il gruppo 1 è «$1», un gruppo con nome è «$<nome>». Se di un gruppo leggi «non ha partecipato», al suo posto non verrebbe inserito niente.

Quello che incolli non viene caricato. Da nessuna parte.

Il testo che scrivi resta nella memoria del tuo browser: nessuna richiesta parte mentre scrivi. Puoi incollare anche qualcosa di riservato.

  • Elaborazione localeTutto avviene in questa pagina.
  • Niente da caricare, niente da aspettareNiente da caricare, nessuna attesa.
  • Niente da cancellareNon conserviamo nulla: non ci arriva nulla.
IL TUO DISPOSITIVOil tuo fileelaborazioneil risultatoservernon ci arriva

Altri strumenti della categoria