Expresiones regulares en Python

Las expresiones regulares en Python, y en otros lenguajes, son una secuencias de caracteres que forma un patrón de búsqueda y se puede usar para verificar si una cadena contiene este patrón.

» Ver más ejemplos

Python tiene un paquete incorporado llamado re, que se puede usar para trabajar con expresiones regulares. Puedes comenzar a usar expresiones regulares usando el módulo re.

FunciónDescripción
findallDevuelve una lista que contiene todas las coincidencias
searchDevuelve un objeto Match si hay una coincidencia en cualquier parte de la cadena
splitDevuelve una lista donde la cadena se ha dividido en cada coincidencia
subReemplaza una o varias coincidencias con una cadena
matchDetermina si la expresión coincide al principio de la cadena

Metacaracteres

Existen metacaracteres, que no son otra cosa que caracteres con significado especial.

CarácterDescripciónEjemplo
[]Representa un conjunto de caracteres[a-c]
\Señala una secuencia especial (también puede usarse para escapar de caracteres especiales)\n
.Cualquier carácter (excepto el carácter de salto de línea)ho..a
^Comienza con^hola
$Termina confin$
*Cero o más ocurrenciascad*
+Una o más ocurrenciascad+
{}Exactamente el número especificado de ocurrenciascad{3}
|Cualquiera ouno|otro
() Captura y grupo

Caracteres Especiales

Una secuencia especial se especifica con el caracter \ seguido por uno de los caracteres en la lista a continuación:

CaracterDescripciónEjemplo
\ADevuelve una coincidencia si los caracteres especificados están al principio de la cadena\AInicio
\bDevuelve una coincidencia donde los caracteres especificados están al principio o al final de una palabra r»\bpalabr»
r»labra\b»
\BDevuelve una coincidencia donde están presentes los caracteres especificados, pero NO al principio (o al final) de una palabra
r»\Bain»
r»ain\B»
\dDevuelve una coincidencia donde la cadena contiene dígitos (números del 0 al 9)\d
\DDevuelve una coincidencia donde la cadena NO contiene dígitos\D
\sDevuelve una coincidencia donde la cadena contiene un carácter de espacio en blanco\s
\SDevuelve una coincidencia donde la cadena NO contiene un carácter de espacio en blanco\S
\wDevuelve una coincidencia donde la cadena contiene cualquier carácter de palabra (caracteres de la A a la Z, dígitos del 0-9 y el carácter de subrayado _)\w
\WDevuelve una coincidencia donde la cadena NO contiene ningún carácter de palabra\W
\ZDevuelve una coincidencia si los caracteres especificados están al final de la cadenaCadena\Z

Conjuntos

Un conjunto es un conjunto de caracteres dentro de un par de corchetes [] con un significado especial

ConjuntoDescripción
[asd] Devuelve una coincidencia donde está presente uno de los caracteres especificados (a, s, o d)
[a-d] Devuelve una coincidencia para cualquier carácter en minúscula, alfabéticamente entre a y d
[^asd] Devuelve una coincidencia para cualquier carácter excepto los caracteres a, s y d
[0123] Devuelve una coincidencia donde cualquiera de los dígitos especificados (0, 1, 2 o 3) están presentes
[0-9] Devuelve una coincidencia para cualquier dígito entre 0 y 9
[0-5][0-9] Devuelve una coincidencia para cualquier número de dos dígitos de 00 y 59
[a-zA-Z] Devuelve una coincidencia para cualquier carácter alfabéticamente entre a y z, minúsculas o mayúsculas
[+] En los conjuntos, +, *,., |, (), $, {} no tiene un significado especial, por lo que [+] significa: devolver una coincidencia para cualquier carácter + en la cadena

Tomando en cuenta los conjutos de caracteres anteriormente descritos es posible formar expresiones regulares. Comencemos por ver como funcionan las distintas opciones que tiene python para evaluar expresiones.



Función findall()

La función findall devuelve una lista que contiene todas las coincidencias.

El siguiente ejemplo verifica si existen números en la cadena y devuelve una lista.

import re

p = re.compile(r'\d+')
x = p.findall('11 es un número y 12 también')

print(x)

if x:
    print("Si, hay al menos una coincidencia!")
else:
    print("No hay coincidencias")

Al ejecutar el ejemplo obtenemos lo siguiente:

Expresiones regulares en Python

Funcion match()

La función search() devuelve None si no encuentra ninguna coincidencia. Si tienen éxito, se devuelve una instancia de objeto de coincidencia, que contiene información sobre la coincidencia: dónde comienza y finaliza, la subcadena que coincidió y más.

El siguiente ejemplo verifica si en una cadena se encuentra una dirección de correo válida.

import re

ex = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
email = "correo.prueba@dominio.com"

if re.match(ex, email) is None:
    print("No es dirección de correo válida")
else:
    print("Es dirección de correo válida")

Al ejecutar el ejemplo tenemos el siguiente resultado:

Expresiones regulares en Python, patrón de correo.

Si alteras la dirección de correo, agregando por ejemplo un espacio, la condición is None será falsa.

Esperamos que te sea de utilidad estos ejemplos de Expresión regular en Python.

Más información en ingles: https://geekole.com/regular-expressions-in-python/