Le regular expression in 10 minuti…

18 12 2006

Una regular expression (espressione regolare, o RE, o regexp) è una rappresentazione di una stringa, generalmente utilizzata per eseguire ricerche e/o sostituzioni in un file di testo, tramite editor (come il vim) o tool appositi (ad esempio grep e sed)

Ma facciamo degli esempi:
grep ciao file
in questo modo verrà cercata la parola stringa all’interno del file, ma questa non è certo una RE “eccezionale”, facciamo un nuovo esempio:
grep c..o file
con il . andiamo a specificare “qualsiasi carattere” sia nella 2a e 3a posizione, quindi ad esempio potrebbero essere restituiti sia ciao che caio, entrambe i pattern soddisfano la regexp
grep c[ia].o file
con le parentesi quadre, andiamo a definire l’elenco dei caratteri (alfabeto) che possono essere presenti nella seconda posizione del nostro pattern
grep c[ia][^i]o file
se preceduto da ^, invece andiamo a specificare che quel carattere non può essere una i. Ma se vogliamo specificare che la riga deve iniziare con “c“?
grep "^c[ia][^i]o” file
quindi in questo modo solo le righe che iniziano con c, dove il 2° carattere è i oppure a ed il 3° carattere non è una i, con il 4° carattere pari a o saranno visualizzate
Oltre a specificare come deve iniziare una riga, possiamo indicare anche come deve finire, grazie a $
grep "^c[ia][^i]o$” file
così diciamo che la o è l’ultimo carattere che compare nella riga.
Il carattere * indica 0 o più occorrenze del carattere precedente, ad esempio:
grep "^c[ia][^i]o.*\.$” file
Così invece andiamo a cercare una stringa dove le righe iniziano con c, dove il 2° carattere è i oppure a ed il 3° carattere non è una i, con il 4° carattere pari a o, inoltre ci possono essere n caratteri (anche nessuno) e la riga deve terminare con un . (N.B. in questo caso occorre anteporre \ per indicare che si tratta effettivamente di un punto)
Se invece di * utilizzavamo +, in questo caso il carattere precedentemente specificato doveva essere presente almeno una volta
Per ulteriori dettagli, vi consiglio di consultare le manpages:
man 7 regex

Saranno passati 10 minuti leggendo questo post? ;)


Azioni

Informazione

Una risposta a “Le regular expression in 10 minuti…”

16 02 2008
franganghi (15:27:03) :

ti rendi conto che sei stato chiarissimo? ho capito perfettamente.

grazie

Lascia un commento

Puoi usare questi tag : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>