En los últimos días le estoy encontrando cada vez más utilidad a las expresiones regulares en mis actividades diarias, ya sea en mi trabajo como programador como en el uso diario de e-mails, documentos de texto o archivos. Es por esto que decidí empesar a hablar de ellos y realizar una descripción de los mejores programas como así también su uso en las aplicaciones web.
En esta primera entrega, voy a hacer una reseña a modo de introducción a las expresiones regulares.
Conceptos Básicos:
Las expresiones regulares son un modo de describir una cadena sin enumerar sus elementos.
Todos sin darnos cuenta los hemos visto a lo largo de nuestro uso diario en la pc. Con sólo buscar archivos de texto en un administrador de archivos notaremos el “*.txt” en el tipo de archivo a buscar, esto en menor medida es una suerte de expresion que esta diciendo que los archivos buscados deben tener la extensión seleccionada. De esta manera se utilizan las expresiones regulares.
Algunos Usos Comunes:
Por cuestiones de Seo hoy está muy requerido re escribir las direcciones para que no tengan ni extensiones .php ni se vean las cadenas de variables: ej sirviejo.com.ar?post=expresionesregulares a sirviejo.com.ar/expresiones-regulares. En futuras presentaciónes voy a mostrar como hacer esto.
Otros usos consisten en remplazar cadenas por otras, se usa en el diseño xhtml de sitios. Donde los diseñadores hacen su template y luego el programador remplaza las etiquetas puestas por el diseñador, por el contenido del sitio tomado de un txt, de un xml o de una base de datos.
También son muy utiles para comprobar formularios, como cuando se requiere que el mail contenga el @.
Como estas hay muchas más y voy a tratar de ejemplificarlas en los proximos días.
Descripción de las expresiones regulares
“.” : Cualquier caracter. (1 solo)
“\”: no se utiliza nunca por sí sola, sino en combinación con otros caracteres
extraido de wikipedia:
\t — Representa un tabulador.
\r — Representa el “regreso al inicio” o sea el lugar en que la línea vuelve a iniciar.
\n — Representa la “nueva línea” el carácter por medio del cual una línea da inicio. Es necesario recordar que en Windows es necesaria una combinación de \r\n para comenzar una nueva línea, mientras que en Unix solamente se usa \n.
\a — Representa una “campana” o “beep” que se produce al imprimir este carácter.
\e — Representa la tecla “Esc” o “Escape”
\f — Representa un salto de página
\v — Representa un tabulador vertical
\x — Se utiliza para representar caracteres ASCII o ANSI si conoce su código. De esta forma, si se busca el símbolo de derechos de autor y la fuente en la que se busca utiliza el conjunto de caracteres Latin-1 es posible encontrarlo utilizando “\xA9″.
\u — Se utiliza para representar caracteres Unicode si se conoce su código. “\u00A2″ representa el símbolo de centavos. No todos los motores de Expresiones Regulares soportan Unicode. El .Net Framework lo hace, pero el EditPad Pro no, por ejemplo.
\d — Representa un dígito del 0 al 9.
\w — Representa cualquier carácter alfanumérico.
\s — Representa un espacio en blanco.
\D — Representa cualquier carácter que no sea un dígito del 0 al 9.
\W — Representa cualquier carácter no alfanumérico.
\S — Representa cualquier carácter que no sea un espacio en blanco.
\A — Representa el inicio de la cadena. No un carácter sino una posición.
\Z — Representa el final de la cadena. No un carácter sino una posición.
\b — Marca el inicio y el final de una palabra.
\B — Marca la posición entre dos caracteres alfanuméricos o dos no-alfanuméricos.
“[ ]“: agrupar caracteres en grupos o clases.
“|”: una de varias opciones.
“$”: Representa el final de la cadena de caracteres o el final de la línea.
“^”: como carácter individual: el carácter “^” representa el inicio de la cadena.
“()”: sirven para agrupar caracteres, que luego pueden ser referenciados.
“?”: varias funciones - especificar que una parte de la búsqueda es opcional, permite “nombrar” grupos de la siguiente forma: $1, $2 …
“{}”: son caracteres literales cuando se utilizan por separado en una expresión regular.
“*”: sirve para encontrar algo que se encuentra repetido 0 o más veces.
“+”: para encontrar una cadena que se encuentre repetida 1 o más veces.
Los grupos anónimos (extraido de wikipedia) se establecen cada vez que se encierra una expresión regular en paréntesis, por lo que la expresión “<([a-zA-Z]\w*?)>” define un grupo anónimo que tendrá como resultado que el motor de búsqueda almacenará una referencia al texto que corresponda a la expresión encerrada entre los paréntesis.
Un programa que recomiendo es el RegexBuddy, que nos permite probar nuestras expresiones y ver como haría los remplazos, o como encontraria las cadenas.
Sin duda el mejor sitio en la web para encontrar recursos de expresiones regulares es:
http://www.regular-expressions.info/index.html
También es bueno este manual en desarrollo web.
Compártelo