Qualche giorno fa mi sono collegato ad Hackerrank e ho iniziato un percorso per imparare a scrivere espressioni regolari (regex). Avevo già delle basi che volevo rispolverare e avevo anche un vecchio software per la sperimentazione. Cercando sul web un aggiornamento a questo programma ho scoperto una quantità incredibile di materiale, non solo programmi ma anche siti per la scrittura guidata e la sperimentazione.

code 540 320

INTRODUZIONE

Per chi non sapesse cosa sono le espressioni regolari suggerisco una visita al solito Wikipedia https://it.wikipedia.org/wiki/Espressione_regolare.
In sostanza, si tratta di espressioni che descrivono sequenze di caratteri allo scopo di fare ricerche o sostituzioni all'interno di un testo.
Nella mia piccola esperienza mi è capitato di utilizzarle per la validazione di input e per il controllo di risultati da decodifiche OCR.
Ad esempio, per riconoscere un codice fiscale potremmo scrivere qualcosa del genere:

[a-zA-Z]{6}\d\d[a-zA-Z]\d\d[a-zA-Z]\d\d\d[a-zA-Z]

che si legge così:
- 6 caratteri alfabetici ("[a-zA-Z]{6}")
- 2 cifre ("\d\d")
- 1 carattere alfabetico ("[a-zA-Z]")
- 2 cifre ("\d\d")
- 1 carattere alfabetico ("[a-zA-Z]")
- 3 cifre ("\d\d\d")
- 1 carattere alfabetico ("[a-zA-Z]").

Ovviamente si può fare molto meglio, ad esempio per il carattere che indica il mese (il nono) potremmo accettare solo i 12 caratteri previsti ("abcdehlmprstABCDEHLMPRST"); se volete davvero una soluzione per i codici fiscali, date un'occhiata qui, un lavoro davvero notevole!

Supponiamo di aver preparato questa espressione regolare per inserirla in una procedura che deve estrarre tutti i codici fiscali da un file di testo; per provare la correttezza dell'espressione regolare possiamo inserirla direttamente all'interno del nostro programma ed eseguirlo. Questo può risultare scomodo, anche se si utilizzano linguaggi o ambienti di sviluppo "user-friendly" (penso a Python); una buona alternativa è rappresentata da una serie di tool e siti web che ci possono aiutare anche nella scrittura dell'espressione.

Qui di seguito trovate una lista di alcuni di questi ambienti; provandone anche uno solo ci si potrà facilmente rendere conto della loro potenza.

Rad Software Regular Expression Designer

Questo è il programma che ho usato in passato per provare le mie espressioni regolari. Si tratta di un software piuttosto datato (l'ultima versione è del 2007 e non ho trovato aggiornamenti) e il produttore sembra che non sia più raggiungibile: se però cercate con google dovreste trovare diversi siti che ne permettono il download.

regexp rad

L'applicazione è molto potente e mi ha spesso aiutato non solo nella prova ma anche in fase di scrittura, grazie alla presenza di un elenco dei costrutti di base facilmente consultabile.

.NET Regular Expression Designer

Questo software, che potete scaricare da qui, sembra la naturale evoluzione di quello descritto qui sopra. I miglioramenti riguardano la colorazione dell'espressione e la possibilità di generare il codice in C#, Visual Basic .NET o JavaScript.

regexp designer

REGBUDDY

Questo è un software a pagamento (lo potete scaricare da qui https://www.regexbuddy.com/); vi consiglio di visitare il sito collegato https://www.regular-expressions.info/ che rappresenta una vera e propria miniera di informazioni.

SITO regex101.com

La mia più grande sorpresa è stata quella di trovare addirittura di siti che forniscono le stesse funzionalità dei programmi descritti qui sopra.
Fra questi https://regex101.com/ che, oltre a permettere di provare le proprie espressioni, fornisce anche delle spiegazioni, funzionalità molto utile per verificare che quanto si è scritto corrisponda effettivamente a quello che si aveva in testa.

regexp 101

SITO regexr.com

Anche il sito https://regexr.com/ fornisce funzionalità per la scrittura assistita e la verifica delle espressioni regolari.

regexp regexr

CONCLUSIONI

Suggerisco di provare almeno uno di questi ambienti: la scrittura di un'espressione regolare non è un compito semplice e l'assistenza fornita da questi sistemi è una risorsa essenziale.
Personalmente trovo molto utile la funzione (presente in entrambi i siti presentati) di "spiegazione" dell'espressione regolare: non solo per controverifica di quanto si è eventualmente scritto ma anche nei casi in cui si utilizzino delle espressioni già pronte ma che si vogliono capire prima di usare!
Buon divertimento con le espressioni regolari!!!