Le espressioni regolari sono uno degli argomenti più ostici che ci si può trovare ad affrontare quando si usa un computer. Purtroppo sono anche una delle cose più utili, in particolare quando si cerca qualcosa che è sepolto nel disco rigido o quando si devono estrarre informazioni da grosse moli di dati.
Ma prima di tutto, cos’è una espressione regolare, o come si dice normalmente in gergo informatico, una regexp?
Definizione. Una espressione regolare è una sequenza di caratteri che definisce uno schema di ricerca (search pattern) di informazioni strutturate in modo più o meno preciso.
Ecco, la chiave di tutto sta proprio nella espressione “più o meno preciso”. Cercare una parola precisa in un file è piuttosto facile, molto meno facile è cercare tutte le possibili variazioni della stessa parola, oppure intere classi di parole.
Arrivato a questo punto dovrei fare qualche esempio più o meno complicato di uso delle espressioni regolari per risolvere qualche problema pratico, come scambiare il nome con il cognome in una lista di indirizzi, aggiungere http://
, o meglio https://
, a tutti gli indirizzi web presenti in un file, cercare i numeri degli ordini di acquisto di una azienda e trasformarli in un formato standardizzato.
Ma non mi sogno nemmeno di farlo, scappereste quasi tutti a gambe levate. Perché le espressioni regolari si apprezzano solo quando servono veramente, quando permettono di risparmiare tempo e fatica facendo svolgere al computer, invece che a noi, le noiose operazioni ripetitive per le quali è così portato.
Imparare ad usare le espressioni regolari
E allora come si può imparare ad usare queste benedette espressioni regolari?
Ci sono decine di libri e di tutorial che ne trattano, ne ho elencati alcuni nella bibliografia. Devo però ammettere che i libri e la maggior parte dei tutorial non li ho mai non dico letti ma nemmeno guardati, mi annoierebbero troppo con le loro sequenze di regole e regolette, terra-terra e quasi inutili o così acrobatiche da essere incomprensibili.
Molto meglio i siti web che insegnano ad usare in pratica le espressioni regolari: inserisci da una parte l’espressione regolare e dall’altra il testo in cui cercare e l’applicazione mette in evidenza tutte le sequenze di caratteri che soddisfano l’espressione inserita (le occorrenze), con una spiegazione più o meno dettagliata di quello che succede.
Fra tutti i siti di questo tipo, il mio preferito è regex101, veloce e con spiegazioni chiare e prive di inutili dettagli. Al secondo posto Debuggex, ottimo ma più complesso da usare, soprattutto le prime volte. Non male anche RegExr, che però interpreta le espressioni regolari inserite utilizzando il motore JavaScript del browser, che non è sempre compatibile al 100% con le espressioni regolari di altri linguaggi.
Ci sporchiamo le mani?
Tutto qui? Per ora si, questa voleva essere solo una piccolissima introduzione al mondo oggettivamente complicato delle espressioni regolari. Più o meno come mettere il dito nell’acqua per vedere se è fredda.
Se l’argomento interessa, si può andare avanti con l’esplorazione, magari partendo da problemi pratici non troppo banali (affrontabili con tecniche meno complesse), ma nemmeno tanto complicati da risultare ostici.
Che ne dite? Aspetto il vostro feedback nei commenti.
Bibliografia
Libri
-
Fitzgerald, Introducing Regular Expressions (O’Reilly 2012).
-
Goyvaerts, Regular Expressions Cookbook, 2a edizione (O’Reilly 2012).
-
López, Romero, Mastering Python Regular Expressions (Packt 2014).
Tutorial
-
RegexOne: learn regular expressions with simple, interactive exercises.
-
Regular-Expressions.info: the premier website about regular expressions.
-
Regex Tutorial: from regex 101 to advanced regex.
-
Guida alla sintassi delle espressioni regolari (con esempi).
-
Using Grep & Regular Expressions to Search for Text Patterns in Linux.