domingo, marzo 13, 2005

Expresiones regulares para lerdos

Estoy con una practica de Compiladores I y tengo que aprender Expresiones Regulares. Lo he intentado alguna vez con tutoriales pero siempre me he acabado rindiendo y he salido del paso usando la técnica secreta de todo programador que no tiene ni puta idea sobre un tema (google + cut&paste).

Pedí ayuda a Naroic y me dio una clase magistral por Messenger sobre Expresiones Regulares.



Las expresiones regulares sirven para definir el vocabulario de un lenguaje.

* es para repetir de 0, 1 o hasta n veces algo
ejemplo a* sería el conjunto formado por la palabra vacía, a, aa, aaa, aaaa, etc.

+ es lo mismo pero de 1 a n (o sea, la palabra vacía no está incluida)
ejemplo a+ sería el conjunto formado por a, aa, aaa, aaaa, etc.

[abc] sería el conjunto {a,b,c} (o sea, esas letras, algo así como o "a" o "b" o "c")
ejemplo el lenguaje [abc] tendría tres palabras: la palabra "a", la "b" y la "c"
ejemplo el lenguaje formado por palabras que tengan letras a,b y c sería [abc]* --> abbbc, bababa, ccabcab, etc.

[a-z] seria equivalente a poner [abcde...z]

[a-zA-Z] seria equivalente a poner [abcde...zABCDE…Z]
ejemplo [a-zA-Z]* todas las palabras que no tengan numeros ni simbolos raros

^a es cualquier símbolo que no sea la a
ejemplo ^[a-Az-Z] cualquier símbolo menos una letra

. cualquier símbolo (el lenguaje más grande que existe es entonces .*)

a? es "palabra vacía" y "a"

Meta caracteres
Si quieres que tu lenguaje tenga corchetes has de usar la secuencia de escape "\" (el intro (\n), tabulador (\t), etc.)
ejemplo [\[ab\]] es un lenguaje compuesto por [, a, b y ]

Otros tutoriales Bulma y expresiones regulares en Java


Este tutorial ha sido posible gracias a Naroic y su infinita paciencia...

"Cultura es lo que queda después de haber olvidado lo que se aprendió."