regex – Expresiones regulares en Python

Cuando programamos en cualquier lenguaje de programación, muchas veces tenemos que enfrentarnos con textos. A veces es sencillo, pero otra veces estos textos tienen un formato muy complicado de procesar con las técnicas típicas de programación. Aquí es donde entran las expresiones regulares o regex. En este artículo aprenderás a sacarles el potencial usando Python.

Qué es una expresión regular

Antes de empezar es imprescindible que entiendas qué es una expresión regular. Aunque he dicho hace nada que pueden tener un alto grado de complejidad, entender el concepto es bastante sencillo, y la mejor forma de entenderlo es con un ejemplo.

Imagínate un correo electrónico: pepito@lacasadelgranpepito.com. Vamos a tratar este email como un texto, cosa que es, e intentemos separar el dominio del usuario.

¿Parece sencillo no? Esto lo podemos hacer muy fácil en Python utilizando el método split.

email = 'pepito@lacasadelgranpepito.com'
textos = email.split('@')
usuario = textos[0]
dominio = textos[1]

Pues parece que sí que ha sido sencillo, pero vamos a complicarlo un poco más.

Tabla de expresiones regulares

Estos son algunas de las expresiones regulares más comunes.

CarácterDescripción
.Cualquier carácter excepto un salto de línea
*Cero o más ocurrencias del carácter o patrón anterior
+Una o más ocurrencias del carácter o patrón anterior
?Cero o una ocurrencia del carácter o patrón anterior
^Negación. Busca cualquier carácter que no sea el siguiente
\wCualquier carácter alfanumérico
\dCualquier dígito numérico
\sCualquier carácter de espacio en blanco (espacio, tabulador, etc)
[abc]Cualquier carácter entre los corchetes (en este caso a, b o c)
[a-z]Cualquier carácter entre los límites especificados (en este caso a-z)
[^abc]Cualquier carácter que no esté entre los corchetes (en este caso a, b o c)

Te voy a dejar un enlace a una tabla con la lista de todas las que puedes utilizar.

Usando regex en Python con la librería re

Para sacarle todo el potencial a las expresiones regulares, lo mejor es utilizar la librería re. Ahora te enseñaré ejemplos de cómo puedes sacarte partido. Si aún no sabes cómo usar Python, te dejo un enlace a nuestra serie de artículos para aprender Python.

Comparando si el texto contiene el patrón con match

Hay ocasiones en las que simplemente vamos a querer saber si un texto contiene el patrón que estamos buscando. Para esto utilizaremos la función match. En este ejemplo, queremos saber si el texto se encuentra compuesto sólo por números.

import re
patron = '\d+'
texto = '1'
encontrado = re.match(patron, texto)
if encontrado:
  print('Encontrado')
else:
  print('No Encontrado')	

Extrayendo el patrón con findall

Saber si un texto contiene un patrón está muy bien, pero y si queremos saber cuáles han sido aquellos textos que han matcheado ¿cómo lo hacemos? En el siguiente caso, queremos encontrar todos los números que aparecen en un texto.

import re
patron = '\d+'
texto = 'b1c2c'
encontrado = re.findall(patron, texto)
if encontrado:
  print(encontrado)
else:
  print('No Encontrado')	

En este caso, se imprimirían los números ‘1’ y ‘2’.

Validar la expresión regular online

Si no tienes claro cuál es la expresión regular que debes utilizar, te dejo por aquí un enlace a una página en la que puedes poner un texto e ir jugando con tu patrón hasta que tengas el que necesitas.

Conclusiones

En este artículo has aprendido cómo utilizar las regex en Python. Espero que te haya servido y que puedas llevar tu código al siguiente nivel.

¡Muchas gracias por haberte pasado por aquí! Si tienes alguna duda, déjala en los comentarios.