Categorías
Curso Python

Expresiones Regulares en Python

Las expresiones regulares son una herramienta poderosa para la manipulación y búsqueda de texto. En Python, el módulo re proporciona una variedad de funciones para trabajar con expresiones regulares. A continuación, se explica cómo utilizar algunas de estas funciones con ejemplos específicos.

Importar el Módulo re

import re

match: Coincidencia al Inicio de la Cadena

my_string = "Esta lección es llamada Expresiones Regulares"
my_other_string = "Esta lección es llamada Manejo de ficheros"

match = re.match("Esta es la lección", my_string, re.I)
print(match)
start, end = match.span()
print(my_string[start:end])

match = re.match("Esta no es la lección", my_other_string)
if match is not None:
    print(match)
    start, end = match.span()
    print(my_other_string[start:end])

print(re.match("Expresiones Regulares", my_string))

Explicación: re.match busca una coincidencia solo al inicio de la cadena. El flag re.I hace la búsqueda insensible a mayúsculas y minúsculas

search: Búsqueda en Toda la Cadena

search = re.search("lección", my_string, re.I)
print(search)
start, end = search.span()
print(my_string[start:end])

Explicación: re.search busca la primera coincidencia en toda la cadena.

findall: Encontrar Todas las Coincidencias

findall = re.findall("lección", my_string, re.I)
print(findall)

Explicación: re.findall devuelve una lista con todas las coincidencias.

split: Dividir una Cadena

print(re.split(":", my_string))

Explicación: re.split divide la cadena usando el patrón proporcionado.

sub: Sustitución de Texto

print(re.sub("[l|L]ección", "LECCIÓN", my_string))
print(re.sub("Expresiones Regulares", "RegEx", my_string))

Explicación: re.sub reemplaza todas las ocurrencias del patrón con el texto proporcionado.

Patrones de Expresiones Regulares

Las expresiones regulares utilizan patrones para describir el texto que queremos buscar. A continuación, se presentan algunos patrones comunes:

Patrón Básico

pattern = r"[lL]ección"
print(re.findall(pattern, my_string))

Explicación: Este patrón busca la palabra “lección” en minúsculas o mayúsculas.

Múltiples Patrones

pattern = r"[lL]ección|Expresiones"
print(re.findall(pattern, my_string))

Explicación: Este patrón busca “lección” o “Expresiones”.

Buscar Dígitos

pattern = r"[0-9]"
print(re.findall(pattern, my_string))
print(re.search(pattern, my_string))

Explicación: Este patrón busca cualquier dígito del 0 al 9.

Usar Metacaracteres

pattern = r"\d"
print(re.findall(pattern, my_string))

pattern = r"\D"
print(re.findall(pattern, my_string))

Explicación: \d busca cualquier dígito, mientras que \D busca cualquier carácter que no sea un dígito.

Patrón de Búsqueda Compleja

pattern = r"[l].*"
print(re.findall(pattern, my_string))

Explicación: Este patrón busca cualquier cadena que comience con “l” seguida de cualquier cosa (.*).

Ejemplo de Validación de Email

email = "hackeando@hackeando.es"
pattern = r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z-.]+$"
print(re.match(pattern, email))
print(re.search(pattern, email))
print(re.findall(pattern, email))

email = "hackeando@hackeando.es.mx"
print(re.findall(pattern, email))

Explicación: Este patrón valida direcciones de correo electrónico, buscando una estructura comúnmente aceptada para emails.

Conclusión
Las expresiones regulares son una herramienta extremadamente útil en Python para la búsqueda, manipulación y validación de texto. Comprender cómo usar re.match, re.search, re.findall, re.split y re.sub, junto con el conocimiento de los patrones de expresión regular, permite realizar tareas complejas de procesamiento de texto de manera eficiente. Esta habilidad es esencial para cualquier desarrollador que trabaje con grandes volúmenes de datos textuales o que necesite validar entradas de usuario de manera robusta y precisa.