
Expresiones regulares en vivo, con Python
Descripción
Objetivos
- Leer una expresión regular ajena y saber, sin ejecutarla, qué va a casar y dónde se detiene.
- Escribir tus propios patrones combinando clases, cuantificadores, anclas y grupos, y elegir entre las varias formas de resolver un mismo caso.
- Extraer y transformar información de texto real: sacar campos de un log, normalizar datos y reescribir con
re.suby grupos con nombre. - Reconocer los límites de la herramienta: qué no se debe resolver con una regex y cómo evitar un ReDoS que tumbe un servicio.
- Escribir patrones eficientes y medir su coste, algo crítico para quien construye reglas de detección sobre grandes volúmenes.
Audiencia
Prerrequisitos
Temario
Las expresiones regulares son la navaja para trabajar con texto: buscar, validar, extraer y transformar sin programar un analizador a mano. Aparecen en todos los oficios técnicos, desde un grep en un servidor hasta una regla de detección en un SIEM, y casi nadie las enseña practicando.
Este taller le da la vuelta a eso. Cada concepto se presenta, se conecta con un caso real y se practica al instante en un intérprete web que resalta las coincidencias mientras escribes. No hay diapositivas que mirar y olvidar: se aprende tecleando. Trabajamos con el sabor del módulo re de Python, y llevamos la teoría hasta cuatro terrenos donde la regex se gana el sueldo: logs de seguridad, limpieza de datos, detección de secretos y rendimiento.
Cuatro horas repartidas en un bloque de fundamentos y cinco de aplicación. Los tiempos son orientativos y el reparto se ajusta al perfil del grupo.
Fundamentos: leer y escribir sin miedo
Recorrido guiado por las piezas del lenguaje, una idea cada vez, practicando cada una sobre texto real. Aproximadamente 90 minutos.
Todo es un carácter
Literales, el comodín . y la clase \d. La primera coincidencia y por qué el motor avanza como avanza.
Clases propias, negación y rangos
Construir tu propio conjunto de caracteres con [abc], negarlo con [^abc] y abreviarlo con rangos [a-z].
Cuantificadores
Repetición exacta con {m,n} y los abiertos *, + y ?. Cuándo cada uno es el correcto y cuándo sobra.
Espacios y palabras
Las clases \s y \w, y la voracidad de los cuantificadores: por qué .* se come más de lo que esperabas y cómo .*? cambia el resultado.
Anclas y fronteras
^, $ y \b, y qué significa de verdad atar un patrón a una posición en lugar de dejarlo flotar por la cadena.
Grupos de captura y alternación
Recordar un trozo del texto para reutilizarlo, y elegir entre variantes sin escribir tres patrones distintos.
Mundo real 1: logs de seguridad
Bajamos los fundamentos a un access.log de verdad, del tipo que genera cualquier servidor en producción. Aproximadamente 35 minutos.
Extraer todas las direcciones IP
El primer patrón útil de la sesión, y la conversación sobre cuánto rigor merece la pena en la validación.
Aislar intentos fallidos repetidos
Un detector de fuerza bruta que cabe en una línea, y qué le falta para ser una regla de detección seria.
Convertir el log en filas de tabla
Los grupos de captura como parser: de texto plano a campos estructurados listos para una hoja de cálculo o un INSERT.
Anonimizar direcciones antes de compartir
Sustitución con re.sub para poder pasarle el fichero a un tercero sin repartir datos personales.
Mundo real 2: ETL y limpieza
Un export de contactos sucio, de esos que llegan de tres fuentes distintas y ninguna se puso de acuerdo. Aproximadamente 35 minutos.
Reescribir fechas a formato ISO
re.sub con grupos con nombre (?P<...>), que convierten un patrón ilegible en algo que se entiende seis meses después.
Extraer el número nacional
Sacar el teléfono ignorando el prefijo internacional, con sus tres o cuatro formas de aparecer escrito.
Normalizar teléfonos con alternación
Quitar el prefijo cuando puede venir de varias maneras, sin encadenar reemplazos a mano.
Pasar cada registro a una tupla estructurada
El paso que cierra el bloque: del fichero sucio a datos que ya se pueden cargar en algún sitio.
Mundo real 3: detección de secretos
Montamos, en pequeño, lo que hace un escáner de secretos previo al commit. Aproximadamente 30 minutos.
Firmas de claves y tokens por su forma
Credenciales de AWS, GitHub y Stripe: cada una tiene una silueta reconocible, y esa silueta es la regla.
El falso positivo del detector ingenuo
Por qué buscar por el nombre de la variable falla, y qué se gana al buscar por la forma del valor.
Redacción de secretos
Tachar la credencial con re.sub antes de que el fichero salga de la máquina.
Nota operativa
Un secreto filtrado se rota, no solo se tacha. La regex ayuda a encontrarlo; no sustituye al procedimiento de respuesta.
Mundo real 4: dónde una regex NO sirve
Saber cuándo no usar la herramienta es parte de dominarla. Aproximadamente 20 minutos.
El límite teórico
Por qué no se parsea HTML ni ninguna estructura anidada con una expresión regular, por mucho que el patrón parezca funcionar con el ejemplo de turno.
El límite peligroso: ReDoS
Backtracking catastrófico medido en vivo. Un patrón de aspecto inocente y una entrada de pocos caracteres bastan para dejar un proceso girando: es una denegación de servicio real, no una curiosidad académica.
Defensas y motores alternativos
Cómo se acota el riesgo y cuándo conviene saltar a un motor sin retroceso como RE2 o hyperscan.
Bonus: rendimiento para reglas de detección
Para quien escribe reglas que corren sobre torrentes de eventos, donde cada milisegundo se multiplica por el volumen. Aproximadamente 30 minutos.
Medir el coste de un patrón
Un banco de pruebas en vivo para comparar versiones equivalentes y decidir con números, no con intuición.
Las palancas que de verdad mueven la aguja
Literal siempre que se pueda, anclar el patrón, y preferir una clase negada al punto perezoso.
Cortar el retroceso
Ordenar la alternación por probabilidad, usar posesivos y grupos atómicos, y precompilar lo que se va a ejecutar muchas veces.
Metodología
El taller se apoya en una página interactiva propia con un intérprete de expresiones regulares en vivo. Cada bloque sigue el mismo ritmo: se explica un concepto, se muestra dónde aparece en el mundo real y se practica con ejercicios que se corrigen solos, marcando en verde lo que casa y en rojo lo que no debería.
La misma herramienta se usa en clase y queda a mano después, para repasar y experimentar. Toda la práctica corre en el navegador: no hay nada que instalar ni entorno que preparar.
Formato en directo, presencial en España o remoto, con grupos reducidos. La sesión se graba y queda disponible para los asistentes.
Preguntas frecuentes
¿Necesito saber Python?
No a fondo. Usamos la sintaxis de expresiones regulares de Python, que se explica desde cero. Si programas en otro lenguaje, casi todo lo que aprendes se traslada tal cual.
¿Sirve aunque yo no me dedique a la seguridad?
Sí. Las regex son transversales. Los bloques tocan seguridad, datos y desarrollo, y cada asistente aplica lo que ve a su día a día. El de rendimiento interesa especialmente a quien escribe reglas de detección, pero las buenas prácticas valen para cualquiera.
¿Hace falta instalar algo o traer un entorno preparado?
No. Toda la práctica corre en un intérprete web que resalta las coincidencias en vivo. Basta con un navegador. Conviene traer portátil para practicar cómodamente.
¿Qué me llevo al terminar?
La capacidad de leer y escribir patrones con criterio, un puñado de casos reales resueltos y la propia herramienta interactiva para seguir practicando. Y algo menos tangible: la sensación de que esto, que parecía magia, ahora se entiende.