Las Expresiones Regulares (Regex) son patrones poderosos para buscar, validar y manipular texto. En el Universo Python, regex es como un "escáner avanzado" que encuentra exactamente lo que busca en cualquier cadena. En esta guía completa, dominará regex desde lo básico hasta lo avanzado con ejemplos prácticos del mundo real.
Las expresiones regulares son secuencias de caracteres que definen un patrón de búsqueda. Permiten:
- Validar formatos (email, teléfonos).
- Buscar patrones en textos.
- Extraer información específica.
- Reemplazar texto de forma inteligente.
import re
## Ejemplo simple: encontrar todas las palabras con 'python'
texto = "¡Python es increíble! Aprenda python hoy. ¡PYTHON manda!"
matches = re.findall(r'python', texto, re.IGNORECASE)
print(matches) # ['Python', 'python', 'PYTHON']
El Módulo re
Python utiliza el módulo re para trabajar con regex. Las funciones clave incluyen:
re.search(): Encuentra la primera ocurrencia.re.match(): Comprueba el inicio de la cadena.re.findall(): Encuentra todas las ocurrencias.re.sub(): Reemplaza patrones.
🔤 Sintaxis Básica y Metacaracteres
Regex utiliza caracteres especiales para definir patrones:
.: Cualquier carácter excepto salto de línea.^: Inicio de la cadena.$: Fin de la cadena.+: Una o más repeticiones.*: Cero o más repeticiones.\d: Cualquier dígito (0-9).\w: Carácter alfanumérico.
Patrones Más Seguros y Mantenibles
Utilice cadenas raw como r"\d+" para que Python no procese las barras antes que el motor regex. Elija fullmatch() cuando todo el valor deba respetar el formato, search() cuando el patrón pueda aparecer en cualquier posición y finditer() cuando necesite las coincidencias y sus índices. Compile el patrón si se reutiliza.
import re
EMAIL = re.compile(r"[\w.+-]+@[\w-]+\.[\w.-]+", re.IGNORECASE)
def email_valido(valor: str) -> bool:
return EMAIL.fullmatch(valor.strip()) is not None
Errores Comunes y Rendimiento
Regex no siempre es el analizador adecuado. Para formatos estructurados, prefiera json, csv o un parser HTML. Evite repeticiones anidadas ambiguas como (a+)+ con texto no confiable, ya que pueden provocar backtracking excesivo. Pruebe valores válidos, inválidos, vacíos y muy largos. En patrones complejos, re.VERBOSE permite añadir espacios y comentarios para facilitar el mantenimiento.
Conclusión
Regex es una herramienta esencial para cualquier desarrollador. ¡Con práctica, podrá crear patrones para validar y extraer cualquier tipo de información de texto! Para más información, consulte nuestras guías sobre Cadenas en Python y Manipulación de Archivos. También puede consultar la documentación oficial de Python sobre re.