Le regular expression in 10 minuti…


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?😉

3 thoughts on “Le regular expression in 10 minuti…

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...