Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Procesamiento de texto con Python, Unidad 5 — Expresiones regulares (regex), 5.2 — Regex aplicado a texto real ·

Validación de formatos

Validación de formatos con expresiones regulares (regex) en Python

Introducción

En el procesamiento de texto, la validación de formatos es una tarea crucial. Las expresiones regulares (regex) son un poderoso herramienta para validar y extraer información de texto en función de patrones predefinidos. Este artículo te guiará a través del proceso de validación de formatos utilizando regex en Python.

Explicación principal con ejemplos

Las expresiones regulares permiten definir patrones complejos que se pueden usar para validar y extraer información del texto. En Python, las regex son proporcionadas por la biblioteca estándar re.

Ejemplo de validación de formatos de correo electrónico

import re

def validar_correo Electronico(correo):
    patron = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    if re.match(patron, correo):
        return True
    else:
        return False

# Ejemplo de uso
print(validar_correo("ejemplo@dominio.com"))  # Salida: True
print(validar_correo("falso@dominio"))       # Salida: False

Ejemplo de validación de formatos numéricos

import re

def validar_numero(num):
    patron = r'^\d+$'
    if re.match(patron, str(num)):
        return True
    else:
        return False

# Ejemplo de uso
print(validar_numero("12345"))  # Salida: True
print(validar_numero("123a45"))  # Salida: False

Ejemplo de validación de formato de fecha (MM/DD/YYYY)

import re

def validar_fecha(fecha):
    patron = r'^(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])/(\d{4})$'
    if re.match(patron, fecha):
        return True
    else:
        return False

# Ejemplo de uso
print(validar_fecha("02/28/2023"))  # Salida: True
print(validar_fecha("15/31/2023"))  # Salida: False

Errores típicos / trampas

Trampa 1: Ignorar el modo insensible a mayúsculas y minúsculas

# Incorrecto
patron = r'^[a-zA-Z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-zA-Z]{2,}$'
re.match(patron, "EJEMPLO@DOMINIO.COM")

# Correcto
patron = r'^(?i)[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
re.match(patron, "EJEMPLO@DOMINIO.COM")

Trampa 2: No utilizar anclajes

# Incorrecto
patron = r'\d{3}-\d{3}-\d{4}'
re.search(patron, "123-456-7890 foo bar")

# Correcto
patron = r'^\d{3}-\d{3}-\d{4}$'
re.match(patron, "123-456-7890")

Trampa 3: No usar paréntesis para grupos

# Incorrecto
patron = r'(\d{3})-(\d{3}-\d{4})'
re.search(patron, "123-456-7890")

# Correcto
patron = r'((\d{3})-(\d{3}-\d{4}))'
re.search(patron, "123-456-7890")

Checklist accionable

  1. Definir los patrones adecuados: Asegúrate de que tu patron regex cubra todas las variantes posibles del formato que deseas validar.
  2. Prueba exhaustiva: Prueba tu patron con múltiples casos para asegurarte de que no se omitan ni incluyan patrones incorrectos.
  3. Manejo de mayúsculas y minúsculas: Usa anclajes o modificadores según sea necesario para hacer el patron insensible a la distinción entre mayúsculas y minúsculas si es apropiado.
  4. Anclajes y delimitadores: Utiliza anclajes (^ al inicio y $ al final) para asegurar que se validen los formatos completos.
  5. Uso de paréntesis para grupos: Si planeas extraer subpartes del texto, asegúrate de usar paréntesis para definir estos grupos.

Siguientes pasos

  • Implementar validación en tu código: Aplica las técnicas aprendidas a tus propios proyectos.
  • Aprender regex avanzadas: Explora más profundamente los conceptos de regex, como cuantificadores y clases de caracteres.
  • Usar herramientas online para regex: Utiliza herramientas online para probar y depurar tus patrones regex antes de implementarlos en tu código.

¡Ya estás listo para validar formatos de texto con confianza utilizando expresiones regulares en Python!

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).