¡Llevemos tus habilidades al siguiente nivel con ejemplos del mundo real que podrás aplicar inmediatamente en tu trabajo!
Problema: Extraer solo tweets válidos de un archivo JSON masivo
Solución Regex:
"text":"([^"]*)" # Captura el contenido entre comillas después de "text":
Bonus: Filtrar tweets con hashtags
"text":"([^"]*#\w+[^"]*)"
Problema: Extraer errores críticos de un archivo server.log
Patrón Óptimo:
^\[ERROR\].*?(500|404|timeout).*?$
Variante para análisis:
(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) \[ERROR\] (?P<message>.+?) \((?P<code>\d{3})\)
Problema: Unificar formatos de teléfonos
Patrón de Búsqueda:
(\+?\d{1,3})?[\s-]?\(?(\d{3})\)?[\s-]?(\d{3})[\s-]?(\d{4})
Reemplazo:
+1 (\2) \3-\4 # Formato estándar internacional
Pipeline de Limpieza:
cat data.txt | grep -P "regex1" | sed -E 's/regex2/reemplazo/g' > limpio.txt
Validación en Tiempo Real:
import re
if re.fullmatch(r'\b[A-Z]{2}\d{4}\b', codigo_producto):
print("Formato válido")
Extracción Multiarchivo:
find . -name "*.log" -exec grep -P "error|warning" {} +
Problema | Patrón Regex | Ejemplo |
---|---|---|
Duplicados | \b(\w+)\b.*\b\1\b |
Encuentra palabras repetidas |
HTML Tags | <([a-z][a-z0-9]*)[^>]*>(.*?)</\1> |
Captura pares de tags |
CSV Quotes | "(.*?)" |
Texto entre comillas en CSV |
Objetivo: Procesar data.txt para:
Solución Paso a Paso:
# 1. Extraer emails
grep -Po '\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b' data.txt > emails.txt
# 2. Normalizar fechas
sed -E 's/(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])\/(19|20)\d{2}/\3-\1-\2/g' data.txt > fechas_iso.txt
# 3. Limpiar datos
grep -Pv '[^\x00-\x7F]' data.txt > limpio.txt