Lección 5

Flujo de depuración de regex

Fixtures, resaltados, riesgos de backtracking y errores comunes.

El trabajo fiable con regex es orientado a pruebas. Trata los patrones como código: entradas de ejemplo, coincidencias esperadas de salida.

Paso 1: Recopila fixtures representativos

Reúne entradas que deben coincidir y entradas que no deben coincidir:

  • Muestras del camino feliz de logs de producción (redacta secretos)
  • Casos límite: cadenas vacías, Unicode, espacios extra, campos faltantes
  • Falsos positivos conocidos que ya encontraste una vez

Un resaltado verde en una cadena demo no es una suite de pruebas.

Paso 2: Reduce el patrón incrementalmente

Empieza anclado y estricto, luego relaja:

  1. Coincide un prefijo fijo con ^
  2. Añade clases de caracteres para segmentos variables
  3. Añade cuantificadores solo donde la longitud varía de verdad
  4. Activa i o u solo cuando los requisitos lo exijan

Si el patrón coincide demasiado, aprieta antes de añadir exclusiones con negative lookaheads.

Paso 3: Inspecciona grupos de captura

Para cada coincidencia, verifica que los valores de grupo mapeen a los campos que crees haber parseado. Los bugs de $n desplazados en plantillas de reemplazo son habituales.

Usa la vista previa de reemplazo para confirmar la salida reordenada en cada línea del fixture.

Paso 4: Vigila el backtracking catastrófico

Cuantificadores anidados como (.*)* en entrada grande pueden bloquear motores. Síntomas:

  • La pestaña del navegador se cuelga al pegar
  • El paso de lint de CI agota el tiempo

Las correcciones incluyen cuantificadores posesivos/perezosos, grupos atómicos (donde haya soporte) o reescribir para evitar sándwiches de .*.

Lista de errores comunes

ErrorSíntoma
Olvidar gSolo se resalta la primera línea
. sin sJSON multilínea falla
$ sin escapar en reemplazoSe inserta $1 literal incorrectamente
\w para texto internacionalOmite nombres válidos
Parsear formatos anidadosFalsos positivos en HTML/JSON

Conclusión clave

Entrega regex con fixtures, flags documentadas y vista previa de reemplazo en tamaño real de pegado. Cuando crece la complejidad, pasa a un parser — el regex debe ser el bisturí, no el martillo.

Volver al resumen del curso