🎧 Escuchar esta guía
Fechas ISO: 2026-07-22 (el formato bueno)
\b\d{4}-\d{2}-\d{2}\b
# con grupos de captura: año, mes y día se devuelven por separado:
(\d{4})-(\d{2})-(\d{2})
# Python
m = re.search(r"(\d{4})-(\d{2})-(\d{2})", text)
year, month, day = m.groups() # ("2026", "07", "22")
Fechas con barras: 22/07/2026 o 07/22/2026
\b\d{1,2}/\d{1,2}/\d{4}\b # formas DD/MM y MM/DD
# ⚠ el regex NO PUEDE saber cuál de las dos es. 04/07/2026 es
# el 4 de julio en Boston y el 7 de abril en Londres. solo el contexto
# (o la especificación de los datos) lo aclara. ningún patrón resuelve la ambigüedad.
Extraer marcas de tiempo de logs
# línea de log clásica: 2026-07-22 14:30:07,123 ERROR ...
(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2})
# buscar todos los errores de ayer en un log:
grep -E "^2026-07-21 .*ERROR" app.log
# solo la hora (24 h):
\b([01]?\d|2[0-3]):[0-5]\d\b # 9:05, 14:30; rechaza 25:99
Nombres de meses: Jul 22, 2026
\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]* \d{1,2},? \d{4}\b
# coincide con "Jul 22, 2026", "July 22 2026", "Dec 3, 1999"
Dónde debe parar el regex
\d{2} para el mes acepta tranquilamente desde 13 hasta 99. Puedes codificar los meses reales con (0[1-9]|1[0-2]) y los días reales con (0[1-9]|[12]\d|3[01]), pero seguiría aceptando el 30 de febrero. El reparto sensato del trabajo es este: el regex encuentra candidatos y el parser de fechas los valida. datetime.strptime(s, "%Y-%m-%d") lanza un error con el 30 de febrero; tu regex no necesita aprenderse el calendario.# el patrón buscar-y-después-parsear (Python):
for m in re.finditer(r"\b\d{4}-\d{2}-\d{2}\b", text):
try:
d = datetime.strptime(m.group(), "%Y-%m-%d")
except ValueError:
continue # tiene forma de fecha, pero no lo es (2026-13-45)
La opinión sincera
Si procesas datos estructurados y conocidos (una API o un CSV con una especificación), no uses regex:
Si procesas datos estructurados y conocidos (una API o un CSV con una especificación), no uses regex:
strptime o Date.parse con el formato declarado son más estrictos y más claros. Regex se gana el sitio cuando las fechas están escondidas en texto no estructurado: logs, correos o páginas extraídas.📚 Esta es una página de nuestra serie sobre regex. Los cinco conceptos, la trampa codiciosa y cuándo conviene no usar regex, con audio: Regex en 10 minutos →