Desarrollo de Software

Expresiones regulares

Una expresión regular (regex o regexp) es una cadena de texto especial para describir un patrón de búsqueda. Puedes pensar en las expresiones regulares como si fueran los comodines de los asteriscos. Seguramente que estás familiarizado con la notación *.txt para encontrar todos los ficheros de texto. La expresión regular equivalente sería .*\.txt.

Pero puedes hacer mucho más con las expresiones regulares. Por ejemplo, con:

([a-z]+)\.([a-z]+)\.([a-z]+)

coinciden www.davidvalverde.com, blog.misitio.es, etc. Los caracteres especiales que se utilizan con las expresiones regulares reciben el nombre de metacaracteres. Los que aparecen a continuación son los más usados:

Metacaracteres Descripción
. Marca cualquier carácter (excepto el de nueva línea)
^ Marca el inicio de una cadena
$ Marca el final de una cadena
\b Marca el límite de una palabra
x? Marca 0 ó 1 x, donde x es una expresión regular
x* Marca 0 o más x
x+ Marca 1 o más x
x|y Marca x o y, una de las opciones
[abc] Marca cualquier carácter del conjunto abc
[a-z] Marca cualquier carácter comprendido entre a y z
[^xyz] Marca cualquier carácter que no esté incluido en el conjunto xyz
\w Marca un carácter alfanumérico (lo mismo que [a-zA-Z0-9_])
\s Marca un espacio en blanco
\t Carácter de tabulación
\n Carácter de nueva línea
\r Carácter de retorno de carro
\v Tabulación vertical
\a Carácter de campana
\e Carácter Escape

Si tienes que utilizar algún metacaracter en expresiones regulares puedes utilizar el formato \metacaracter para eliminar su significado especial. Un ejemplo lo tenemos en \$, que indica simplemente $.

Los identificadores estándar que se utilizan con las expresiones regulares son los siguientes:

Identificador Descripción
* Marca 0 o más veces
+ Marca 1 o más veces
? Marca 0 ó 1 veces
{n} Marca exactamente n veces
{n, } Marca por lo menos n veces
{n, m} Marca por lo menos n veces, pero nunca más de m

Al carácter | se le trata como si fuese un operador OR. Un par de paréntesis () le permite agrupar los caracteres en una expresión regular. Un par de paréntesis cuadrados [] crea un rango o clase de caracteres.

Volvamos a nuestro anterior ejemplo:

([a-z]+)\.([a-z]+)\.([a-z]+)

Como ya he comentado, esta expresión se puede utilizar para marcar cadenas como www.davidvalverde.com. El primer [a-z]+ indica que hay que marcar uno o más caracteres comprendidos entre a-z especificado en el primer paréntesis. Si no se marca ningún carácter, se podrá especificar todo lo que se desee con $1. En esta expresión hay tres pares de paréntesis. El primero (empezando por la izquierda) es $1, el segundo es $2 y el tercero $3. Observa que se utiliza \ para colocar un punto entre los dos grupos de metacaracteres.

Dos ejemplos más:

^foo\.htm$

Marcará una cadena foo.htm, pero no una afoo.htm porque se ha utilizado el metacaracter ^ para especificar que la cadena tiene que empezar con el carácter f, tampoco marcará foo.html porque el metacaracter $ se utiliza para especificar que la cadena tiene que terminar con una m.

^www\.([^.]+)\.host\.com(.*)

Marcará una cadena, como www.username.host.com STATUS=java y asignará $1 al host y $2 a todo lo que siga a www.username.host.com, $2 será STATUS=java.

Más información:

2 comentarios en “Expresiones regulares

Pon un comentario

Tu dirección de email no será publicada.

Puedes usar estas etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>