Introducción a las expresiones regulares en Python
Trabajar con texto es una de las tareas más comunes en programación. Las expresiones regulares se convierten en una herramienta indispensable para resolver diversos problemas, como el análisis de páginas HTML, la validación de formatos de datos o el procesamiento de logs.
En Python, el módulo integrado re permite trabajar con expresiones regulares. En esta guía, exploraremos a fondo su uso, incluyendo métodos populares como re.search() y re.sub(), y mostraremos su aplicación práctica con ejemplos reales.
Fundamentos de las expresiones regulares
¿Qué son y para qué sirven?
Las expresiones regulares (Regular Expressions o RegEx) son un lenguaje especial para describir patrones de búsqueda en texto. Con ellas, puedes buscar, validar y reemplazar fragmentos de texto según reglas específicas.
Tareas típicas resueltas con expresiones regulares
Las expresiones regulares en Python resuelven una amplia variedad de problemas:
- Validación de correos electrónicos y números de teléfono
- Búsqueda de todos los valores numéricos en un texto
- Reemplazo de caracteres no deseados y limpieza de datos
- Extracción de palabras o frases específicas de textos largos
- Análisis de datos estructurados
- Procesamiento de logs y archivos del sistema
Preparación para trabajar
Importación del módulo re
Antes de empezar, debes importar el módulo especializado:
import re
Símbolos y construcciones básicas
Para usar expresiones regulares de forma eficaz, es clave conocer los símbolos principales y su función:
| Símbolo | Función |
|---|---|
| . | Cualquier carácter, excepto nueva línea |
| \d | Cualquier dígito (0-9) |
| \D | Cualquier carácter no numérico |
| \w | Letra, dígito o guion bajo |
| \W | Cualquier carácter que no sea \w |
| \s | Espacio, tabulación o salto de línea |
| \S | Cualquier carácter que no sea espacio |
| ^ | Inicio de la cadena |
| $ | Final de la cadena |
| [] | Carácter de un conjunto específico |
| * | Cero o más repeticiones |
| + | Una o más repeticiones |
| {n,m} | De n a m repeticiones |
Métodos principales para trabajar con expresiones regulares
Método re.search() para buscar la primera coincidencia
El método re.search() busca la primera aparición de un patrón en una cadena. Devuelve un objeto Match si encuentra algo, o None si no hay coincidencia.
import re
texto = "Email: ejemplo@correo.com"
coincidencia = re.search(r'\w+@\w+\.\w+', texto)
if coincidencia:
print("Correo encontrado:", coincidencia.group())
Resultado:
Correo encontrado: ejemplo@correo.com
Explicación del patrón de búsqueda
Analicemos el patrón usado, parte por parte:
- \w+ — una o más letras, dígitos o guiones bajos
- @ — el símbolo arroba (elemento obligatorio en un correo)
- \. — el punto (se escapa con barra invertida)
- \w+ — el dominio de nivel superior
Método re.findall() para buscar todas las coincidencias
Cuando necesitas encontrar todas las apariciones de un patrón en un texto, usa findall(). Este método devuelve una lista con todas las coincidencias encontradas.
texto = "Precios: 100 pesos, 250 pesos, 350 pesos"
numeros = re.findall(r'\d+', texto)
print(numeros) # ['100', '250', '350']
Método re.sub() para reemplazar según un patrón
El método re.sub() reemplaza todas las apariciones de un patrón con un texto especificado.