fido.altervista.org

Espressioni Regolari - introduzione

Molti linguaggi di programmazione e applicazioni di vario genere fanno uso delle Espressioni Regolari, che sono delle espressioni simboliche per indicare esattamente una certa sequenza di caratteri (stringa), che verrà trovata da esse.
In una forma più approssimativa abbiamo già usato qualcosa del genere ogni volta che abbiamo scritto *.* per indicare un qualunque file, o *.txt per un qualunque file di testo, o test?.mp3 per tutti i file mp3 il cui nome è "test" più un altro carattere.
Le espressioni regolari (che da ora in poi indicherò brevemente con regex) sono però uno strumento molto più potente di questo appena ricordato.
Infatti descrivendo opportunamente un pezzo di testo, con esse possiamo dominare i dati su cui stiamo lavorando, secondo le nostre necessità e secondo l'applicazione che stiamo usando.
Per esempio un programmatore con una regex può controllare l'input di un ipotetico utente, verificando che segua un dato criterio prestabilito.
Oppure un utente di un newsreader può creare un filtro appropriato per selezionare da una grande quantità di articoli solo quelli che gli interessano.

Ad un primo impatto le regex possono sconcertare, essendo composte da un miscuglio di lettere, numeri e strani simboli. Tanto per dare una prima idea, la scrittura che abbiamo ricordato all'inizio *.txt in una regex diventa \w+?\.txt .
E' un po' come imparare una nuova lingua, che però non è tanto complicata come può sembrare all'inizio, anzi ci si rende presto conto della grande soddisfazione che si può avere usandola per programmare regex in modo intelligente, per ottenere soluzioni eleganti.
Ho usato l'espressione "programmare" perché il sistema di notazione delle regex costituisce quasi un mini linguaggio di programmazione.

Come abbiamo visto sopra, ci è già capitato di far uso di caratteri speciali, detti metacaratteri, come * e ?. In quel contesto però avevano una potenzialità piuttosto limitata, essendo limitato il loro schema d'uso.
Invece il linguaggio delle regex possiede un insieme di metacaratteri molto ricco, che permette operazioni più complesse.
Oltre ai metacaratteri le regex comprendono anche i caratteri letterali, che valgono proprio come appaiono, cioè rappresentano solo se stessi.
Nell'esempio visto sopra, txt è una sequenza di tre caratteri letterali.

Strumenti

I software che usano le regex sono di vario tipo e quindi anche la sintassi delle regex può variare leggermente tra le varie applicazioni.
Famosi linguaggi come Perl, PHP, Python, JavaScript implementano le espressioni regolari, con qualche differenza però riguardo ai metacaratteri supportati.
L'implementazione fornita da Perl, la PCRE (Perl Compatible Regular Expressions), è quella più vasta e più diffusa, quindi nel tutorial useremo questa.

Uno degli usi più comuni delle regex è la ricerca di un testo all'interno di un documento, perciò molti word processor e text editor implementano l'uso delle regex nella loro funzione di ricerca. Nella sezione Links ve ne sono elencati alcuni che sono freeware, con i relativi link per il download.
Tenete però presente che la loro fedeltà al PCRE è variabile, quindi non tutte le espressioni regolari che studierete saranno sempre importabili in tutte le applicazioni così come sono: qualche piccola variazione nella sintassi è sempre possibile.
Comunque vi consiglio di verificare gli esempi del tutorial e di fare gli esercizi, perché è proprio vero che "facendo si impara", ed è ancor più vero nel campo della programmazione.
Quale strumento usare? Un modo semplice è procurarsi un editor di testo che implementi le regex e, di volta in volta, usare la loro funzione di ricerca in un testo opportuno.
Nella pagina Links troverete elencati alcuni editor di questo tipo, tutti freeware.
Fra tutti vi consiglio PSPad per la sua vicinanza al PCRE e per la facilità d'uso; inoltre, esiste anche la versione italiana.

Anche i newsreader che implementano le regex sono diversi.
La mia scelta è per 40tude Dialog, fedele al PCRE, ed un ottimo newsreader facilmente espandibile grazie ai suoi script. Anche di Dialog esiste la versione italiana.

Notazioni

Per facilitare la comprensione, in tutto il tutorial ogni regex verrà scritta in rosso e ogni stringa trovata dalla regex verrà evidenziata così.
Nella pagina degli esercizi, per controllare se la soluzione pensata è corretta, posizionate il cursore del mouse sulla parola Soluzione: comparirà immediatamente la risposta giusta.

Se le cose non vi appaiono come ve le ho descritte vuol dire che il vostro browser è un po' ... antiquato, e non supporta i fogli stile (CSS 2).
Riuscirete comunque a seguire lo stesso il tutorial; soltanto negli esercizi avrete l'inconveniente di vedere subito le soluzioni.

torna su home avanti

Valid XHTML 1.0! indirizzo gmail Valid CSS 2!

© MLC 2003-2004