Expresiones regulares I

Publicado por

Esta es la primera de dos notas dedicadas a las expresiones regulares, en ella explicaré qué son las expresiones regulares, cómo funcionan y los tipos de caracteres que utilizan; en una nota posterior abordaré otras características con ejemplos.

Una expresión regular es un patrón de búsqueda que está conformado por una serie de caracteres que pueden aparecer dentro de una cadena. Las expresiones regulares, también conocidas como regex o regexp, son soportadas por la mayoría de los lenguajes de programación modernos, además son utilizadas en comandos de UNIX, algunos ejemplos son: grep y Vim. Además son extremadamente poderosas por lo que es muy importante aprenderlas durante la formación académica de un computólogo, entre los cursos donde se profundiza en este tema se encuentran: teoría de la computación, autómatas y compiladores. Sin embargo como todo tienen sus contras, una de sus debilidades más significativa es que no son capaces de reconocer delimitadores anidados, por lo que es imposible escribir expresiones regulares que sean capaces de reconocer expresiones aritméticas cuando contienen paréntesis que agrupan sus elementos.

Proceso

El proceso de evaluación de una expresión regular, consiste en hacer coincidir un sola cadena de texto con el patrón dado. Para que sea valida una cadena esta debe coincidir con el patrón buscado en su totalidad, sin embargo, esto no significa que toda la cadena tiene que cumplir con el patrón, puede ser solo un segmento de ella la que lo cumple.

Las expresiones regulares pueden tener dos tipos de caracteres: literales y especiales.

Literales

Se debe tomar en cuenta que una expresión regular está hecha para que coincidan únicamente los caracteres que se desean obtener.

Por ejemplo el patrón:

“el miedo lleva a la ira”

Este patrón solo debe coincidir con la misma cadena: el miedo lleva a la ira”; aunque también puede coincidir en una subcadena de una cadena más grande:

“El miedo es el camino hacia el lado oscuro, el miedo lleva a la ira, la ira lleva al odio, el odio lleva al sufrimiento. Veo mucho miedo en ti.”

Cebe destacar que las expresiones regulares distinguen mayúsculas de minúsculas por lo que las combinaciones de estas pueden provocar que un patrón no coincida, si esa es la intención se debe de tomar en cuenta cuando se define la expresión regular.

Especiales

Existen muchos caracteres especiales que pueden ser utilizados en las expresiones regulares, en la siguiente lista te menciono los más utilizados.

Caracter Descripción
. Coincide con cualquier caracter.
[caracteres] Coincide con cualquier caracter en un conjunto dado.
[^caracteres] Coincide con cualquier caracter que no esté en el conjunto dado.
^ Coincide con el inicio de una línea.
$ Coincide con el final de una línea
\w Coincide con cualquier caracter de la palabra, cadena sin espacios, incluye los caracteres [A-Za-z0-9].
\s Coincide con cualquier caracter de espacio en blanco, esto incluye [\f\t\n\r].
\d Coincide solamente con digitos [0-9].
| Coincide con el elemento que está a la derecha o a la izquierda del pipe.
(expresion) Limita el alcance de la expresión, agrupa elementos dentro del patrón y permite capturarlos para después utilizarlos.
? Permite solamente cero o una coincidencia del elemento que lo precede.
* Permite cero, una o más coincidencias del elemento que lo precede.
+ Permite una o más coincidencias del elemento que lo precede.
{n} Coincide exactamente n veces las instancias del elemento que lo precede.
{minimo,} Coincide al menos ese mínimo de veces las instancias del elemento que lo precede.
{minimo,maximo} Corresponde a cualquier número de instancias que van desde el mínimo hasta el máximo.

Hasta aquí he explicado qué es una expresión regular, cómo se comportan y qué tipos de caracteres interactúan en su construcción. En la siguiente nota utilizaré todos estos caracteres especiales para ejemplificar su uso y explicar algunos casos particulares sobre las expresiones regulares. ¡Hasta entonces!

Deja una respuesta

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