febrero 04, 2010

Expresiones regulares

Pues como me ha costado entender las expresiones regulares necesito ejemplos prácticos en el shell de Linux.

Como dice Wikipedia una expresión regular describe un conjunto de cadenas de caracteres sin enumerar sus elementos, esto no dice mucho o dice todo, pero como no le entiendo va mi propio tutorial practico.

en el shell de linux creo estos archivos para pruebas

$ touch RichardSite.txt
$ touch richardsite.txt
$ touch Richardsite.txt
$ touch richardSite.txt
$ touch Richard-Site.txt
$ touch data
$ touch datax1
$ touch datax2
$ touch otro

$ ls
data
datax1
datax2
otro
richardsite.txt
richardSite.txt
Richardsite.txt
Richard-Site.txt
RichardSite.txt

$ls [Rr]ichardsite.txt
richardsite.txt Richardsite.txt

$ls [Rr]ichard[Ss]ite.txt
richardsite.txt richardSite.txt Richardsite.txt RichardSite.txt

$ls *-*
Richard-Site.txt

$ls ?ichard?ite.txt
richardsite.txt richardSite.txt Richardsite.txt RichardSite.txt

$ ls data*
data datax1 datax2


Ok, hasta aquí todo va bien, pero cuando intento usar el circunflejo para que me liste lo mismo que lista $ ls data* , es decir, todo lo que comienza con data.

Caret circumflex ^


$ ls ^data
ls: no se puede acceder a ^data: No existe el fichero o el directorio[a^]*


Para lograr lo que se intento hacer con $ ls ^data se tendría que hacer así:


$ ls | grep -E '^data'
data
datax1
datax2


y para obtener lo opuesto es

$ ls | grep -vE '^data'
otro
richardsite.txt
richardSite.txt
Richardsite.txt
Richard-Site.txt
RichardSite.txt


http://linux.die.net/man/7/glob

Otro lugar de información útil es
http://www.proyecto-f.net/2009/12/10-expresiones-regulares-para-php/
donde dan 10 expresiones regulares para PHP

No hay comentarios:

¿Cómo poner el conteo de las filas en una consulta en MySql?

 ¿Cómo poner el conteo de las filas en una consulta en MySql? SELECT  @rownum := @rownum + 1 AS contador,  /*Contador*/ t.*  /* nombre d...