Expresiones regulares II

Publicado por

Esta es la segunda nota del tema de expresiones regulares, si no leíste la primera parte te recomiendo que la revises antes de continuar con esta lectura; porque en ella expliqué qué son las expresiones regulares, cómo funcionan y los tipos de caracteres que utilizan; en esta ocasión abordaré esas características con ejemplos.

Construyendo expresiones regulares

Algunos caracteres especiales tienen como característica que al ser utilizados afectan al subpatrón que se encuentra a su izquierda o derecha, es por eso que si se desea que afecte a un grupo de subpatrones es necesario que sean agrupados dentro de paréntesis, o bien, si es un caracter debe ponerse entre corchetes [].

Se debe tener especial cuidado con el símbolo especial pipe | pues este afecta a los patrones indefinidamente tanto a su izquierda como a su derecha, por lo que se deben agrupar los subpatrones que se deseen afectar junto con ella en su propio conjunto.

Ejemplo con cadenas

El miedo(es el camino al lado oscuro| lleva a la ira)\.

Esta expresión da como resultado cualquiera de las siguientes cadenas:

El miedo es el camino al lado oscuro.

El miedo lleva a la ira.

Como se puede apreciar utilizar el backslash \ permite el escape de caracteres especiales que sean requeridos como parte del patrón y no cómo parte de la expresión regular, en este caso el caracter especial es el punto ..

Ahora incrementemos un poco la complejidad de la expresión. Supongamos que queremos obtener cualquiera de las siguientes cadenas:

El miedo es el camino al lado oscuro.

El miedo lleva a la ira.

El miedo es el camino al lado oscuro. El miedo lleva a la ira.

El miedo lleva a la ira. El miedo es el camino al lado oscuro.

Una posible solución es:

(El miedo(es el camino al lado oscuro | lleva a la ira)\. ?){1,2}

Sin embargo, esta solución también genera cadenas como:

El miedo lleva a la ira. El miedo lleva a la ira.

El miedo es el camino al lado oscuro. El miedo es el camino al lado oscuro.

Inesperadamente para muchos, esta expresión también genera la siguiente cadena:

El miedo lleva a la ira. El miedo es el camino al lado oscuro. El miedo lleva a la ira.

Esto sucede porque el patrón puede coincidir con el texto de búsqueda completo o solamente con una parte.

Otros ejemplos comunes

[3] Coincide con el dígito 3.

[abc] Coincide con a, b o c.

[^abc] Coincide con cualquier caracter a excepción de a, b o c.

[a-z]? Coincide una vez o ninguna con los símbolos {a, b, …, z}.

[A-Z]* Coincide cero o más veces con los símbolos {A, B, …, Z}.

[A-Z]+ Coincide al menos una vez con los símbolos {A, B, …, Z}.

\d Coincide con un dígito.

\d{1,3} Coincide entre 1 y 3 dígitos en el patrón.

\d{4} Coincide 4 dígitos en el patrón.

\d* Coincide con cero o más dígitos.

coding\w Coincide con la palabra coding seguida de cualquier símbolo de palabra [A-Za-z0-9_].

2018$  Coincide con 2018 como final de una línea o de la cadena.

^Folio Coincide la cadena Folio al inicio de una línea o de la cadena.

Espero que estas dos notas sobre expresiones regulares te hayan sido útiles. Si quieres saber cómo utilizarlas en algunos lenguajes de programación, te recomiendo las siguientes series: aprendiendo Go y scripting en Perl.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *