Lección 4
Grupos de captura y reemplazo
Agrupación, backreferences y plantillas de reemplazo.
Los grupos de captura permiten que un regex recuerde partes de una coincidencia. Esa memoria potencia extracción, desgloses de validación y buscar y reemplazar estructurado.
Grupos numerados
Los paréntesis crean grupos numerados de izquierda a derecha:
Patrón: (\d{4})-(\d{2})-(\d{2}) sobre 2026-05-28
| Grupo | Valor |
|---|---|
$1 / \1 | 2026 |
$2 | 05 |
$3 | 28 |
En callbacks de reemplazo de JavaScript, match[1], match[2], … contienen los mismos valores.
Grupos sin captura
Cuando necesitas agrupar sin almacenar una captura, usa (?: ... ):
(?:https?):// agrupa la alternativa del esquema sin ocupar $1.
Esto mantiene estables las plantillas de reemplazo cuando añades prefijos opcionales después.
Backreferences
\1 dentro de un patrón se refiere a lo que coincidió el grupo 1. Ejemplo clásico: (['"]).*?\1 coincide con cadenas entre comillas con la misma comilla de apertura y cierre.
Las backreferences son potentes y fáciles de usar mal en estructuras anidadas — otra razón para no parsear HTML solo con regex.
Plantillas de reemplazo
Editores y lenguajes usan $1, $2 o $& (coincidencia completa) en cadenas de reemplazo:
- Convertir
user_id=123enuserId: 123con un patrón rico en capturas - Normalizar fechas de
DD/MM/YYYYaYYYY-MM-DDreordenando grupos
Previsualiza siempre reemplazos en varias líneas, incluyendo campos vacíos y espaciado inesperado.
Grupos con nombre (JavaScript moderno)
(?<year>\d{4}) expone match.groups.year. Los grupos con nombre mejoran la legibilidad en patrones largos.
Conclusión clave
Diseña patrones para que cada captura mapee a un campo semántico. Si tu cadena de reemplazo necesita diez referencias $n, considera simplificar el patrón o usar un parser.