Espressione Regolare RE

Per imparare le espressioni regolari esiste il programma kregexpeditor e' fantastico, lo consiglio caldamente.

In Linux, soprattutto quando leggiamo le guide (info comando), troviamo spesso la frase "Regular Expression" oppure "RE", cosa significa?

Queste parole generalmente indicano che in quel punto dell'invocazione del comando noi possiamo utilizzare una "espressione regolare", cioe' possiamo mettere oltre che alla parola che intendiamo, una serie di caratteri che ci aiutano a descrivere piu' parole o a cercare una parola; le spressioni regolari permettono di formulare esattamente il criterio di ricerca. Sfortunatamente le espressioni regolari non usano i metacaratteri (come il carattere * che significa qualunque cosa.

Ma facciamo degli esempi per essere piu' chiari: immaginiamo di dover cercare un file, ma non ci ricordiamo esattamente come si chiama, ricordiamo solo che comincia per "leo". A questo punto, usando il metacarattere "jolly" * possiamo trovarlo, infatti basta digitare:

 $ locate leo* 
 /home/max/leonardo 
 /home/max/leone 
 /home/max/leopardo 
 /opt/leontcad 

Come vedete il simbolo asterisco mostra che puo' essere sostituito un qualsiasi numero di caratteri (sia lettere che numeri). I metacaretteri sono automaticamente interpretati (o come si dice in gergo "espansi") nel loro significato piu' largo.

Pero' nelle espressioni regolari il carattere asterico ha un altro significato!

Facciamo una lista dei caratteri speciali:

  • . : Un qualunque singolo carattere.
  • * : Il precedente carattere e' opzionale, ma puo' anche essere ripetuto.
 $ locate pro* 
 /home/max/pr 
 /home/max/pro 
 /home/max/prooo 
  • ? : Il carattere precedente e' opzionale e sara' considerato al massimo una volta sola.
 $ locate gat? 
 /home/max/gat 
 /usr/lib/gatt  
  • [...] : Permette di sostituire una serie di lettere o numeri tra le varie possibilita' indicate, per esempio [a-d] sostituisce le lettere tra a e d , mentre [3-6] tra 3 e 6, e [ax4d] o a o x o 4 oppure d.
 $ ls [gfm]atto 
 gatto 
 fatto 
 matto 
  • ^ : Se si controllano righe di testo con questo caratteri si controlla con cosa inizia la riga. Ma puo' avere anche valore di negazione all'interno delle parentesi quadre (non quelle comprese tra...)
  • $ : Se si controllano righe di testo con questo caratteri si controlla con cosa finisce la riga.
  • { N } : Il precedente carattere e' considerato esattamente N volte
  • { N, } : Il precedente carattere e' considerato almeno N volte
  • { N,M } : Il precedente carattere e' considerato tra le N e le M volte.