Command Palette

Search for a command to run...

Grupos de Captura y Backreferences

Captura partes de una coincidencia y reutilízalas dentro del mismo patrón o en reemplazos, una técnica poderosa de las expresiones regulares.

Lectura: 10 min
Nivel: Principiante

TL;DR - Resumen rápido

  • Los grupos de captura se crean con paréntesis ()
  • Cada grupo captura el contenido entre los paréntesis
  • Las backreferences ($1, $2, etc.) permiten reutilizar el contenido capturado
  • Los grupos sin captura (?:) agrupan sin guardar el contenido
  • Las backreferences funcionan tanto en el patrón como en el reemplazo
  • Los grupos son esenciales para extracción de datos y transformación de texto

Introducción a los Grupos de Captura

Los grupos de captura son una de las características más poderosas de las expresiones regulares. Te permiten capturar partes específicas de una coincidencia y reutilizarlas dentro del mismo patrón o en reemplazos. Esto es especialmente útil para extraer datos, validar formatos y transformar texto de manera eficiente.

Los grupos principales en JavaScript son: grupos de captura con paréntesis (), grupos sin captura (?:), y backreferences ($1, $2, etc.). Comprender cómo funcionan es esencial para crear patrones complejos y eficientes.

  • Grupos de captura () capturan contenido para reutilizar
  • Las backreferences ($1, $2) permiten referenciar capturas anteriores
  • Los grupos sin captura (?:) agrupan sin capturar el contenido
  • Los grupos pueden anidarse para crear patrones más complejos
  • Los grupos son ideales para extracción de datos estructurados

Diferencia entre grupos con y sin captura

Los grupos de captura () capturan el contenido para reutilizarlo con backreferences como $1, $2, etc. Los grupos sin captura (?:) solo agrupan, sin capturar el contenido. Esto mejora el rendimiento cuando no necesitas el contenido capturado.

Sintaxis Básica

Los grupos de captura se crean usando paréntesis (). Todo lo que esté dentro de los paréntesis se captura como un grupo. Puedes tener múltiples grupos en un mismo patrón y anidar grupos dentro de otros grupos.

Grupo Simple

Un grupo simple captura todo lo que esté entre los paréntesis. Por ejemplo, en /(\d4)/, el grupo captura cuatro dígitos consecutivos.

grupo-simple.js
Loading code...

El ejemplo muestra cómo capturar un grupo de cuatro dígitos. match() devuelve un array donde el primer elemento es la coincidencia completa y el segundo elemento (índice 1) es el grupo capturado.

Múltiples Grupos

Puedes capturar múltiples grupos en un mismo patrón. Cada grupo captura su propio contenido y puede ser referenciado individualmente con backreferences. Esto es útil para extraer información estructurada.

grupos-multiples.js
Loading code...

Este ejemplo muestra cómo capturar múltiples partes de una fecha. Cada grupo captura una parte de la fecha y puede ser referenciado individualmente.

Backreferences

Las backreferences te permiten referenciar el contenido capturado por un grupo anterior dentro del mismo patrón. Se usan con el signo de dólar seguido del número del grupo: $1, $2, etc. Esto es especialmente útil en reemplazos donde quieres reutilizar el contenido capturado.

Backreference Básica

Una backreference básica $1 se refiere al primer grupo capturado en el patrón. Es útil para duplicar patrones o reutilizar contenido capturado.

backreference-basica.js
Loading code...

El ejemplo muestra cómo usar $1 para repetir el primer grupo capturado. Esto captura cualquier palabra seguida de un espacio.

Backreferences Múltiples

Puedes usar múltiples backreferences en un mismo patrón. Cada$n se refiere al n-ésimo grupo capturado. Esto permite reutilizar diferentes partes del contenido capturado.

backreference-multiple.js
Loading code...

Este ejemplo muestra cómo usar $1 y $2 para capturar diferentes partes de una fecha. $1 captura el día y $2 captura el año.

Backreferences en reemplazos

Las backreferences son muy potentes en reemplazos. Usastr.replace(regex, '$1') para reutilizar el primer grupo capturado. Esto hace el código más eficiente y legible.

Resumen: Grupos de Captura y Backreferences

Conceptos principales:

  • Los grupos () capturan contenido para reutilizar con backreferences
  • Las backreferences ($1, $2) referencian grupos anteriores
  • Los grupos sin captura (?:) agrupan sin capturar
  • Los grupos pueden anidarse para patrones complejos
  • Los grupos son ideales para extracción de datos estructurados
  • match() devuelve array con grupos en índices 1, 2, etc.

Mejores prácticas:

  • Usa grupos para capturar partes específicas de una coincidencia
  • Usa backreferences en replace() para reutilizar contenido capturado
  • Usa grupos sin captura (?:) cuando no necesites el contenido
  • Anida grupos para crear patrones más complejos y precisos
  • Combina grupos con otras características de regex para mayor potencia
  • Recuerda que los grupos se indexan desde 1, no desde 0