Saltar al contenido

Grupos de captura

Los grupos de captura en las expresiones regulares de JavaScript ofrecen formas poderosas de trabajar con cadenas y manipularlas. Comprender los grupos de captura puede mejorar significativamente tu capacidad para gestionar patrones complejos y extraer datos significativos. En este artículo, profundizamos en los grupos de captura, proporcionando explicaciones extensas, numerosos ejemplos y aplicaciones prácticas.

Entendiendo los grupos de captura

Los grupos de captura se utilizan para agrupar partes de un patrón y capturar el texto coincidente. Estos grupos se crean colocando la parte deseada del patrón dentro de paréntesis (). Cuando se encuentra una coincidencia, la coincidencia completa se almacena en el índice 0 del array de coincidencias, y cualquier grupo de captura dentro del patrón se almacena en los índices siguientes.

Sintaxis y uso básico

Aquí hay un ejemplo simple:


Output appears here after Run.

En este ejemplo, el patrón hello se captura y se puede acceder a él mediante el array de coincidencias. Verás un array con dos "hello" dentro. Como se mencionó anteriormente, el primer elemento es la cadena coincidente completa, que es "hello". El otro elemento es el texto capturado por el grupo de captura, también "hello".

Uso avanzado y técnicas

Grupos de captura anidados

Los grupos de captura pueden anidarse, lo que permite una coincidencia de patrones más compleja. Aquí hay un ejemplo de grupos de captura anidados:


Output appears here after Run.

En este caso, el grupo exterior captura foobar, mientras que los grupos interiores capturan foo y bar por separado.

Grupos sin captura

A veces, podrías querer agrupar partes de tu patrón sin capturarlas. Los grupos sin captura se definen utilizando (?:...). Aquí tienes un ejemplo:


Output appears here after Run.

La parte foo no se captura, pero la parte bar sí.

Ejemplos prácticos

Analizar fechas

Los grupos de captura se pueden utilizar para analizar y formatear fechas a partir de cadenas. Aquí hay un ejemplo:


Output appears here after Run.

Este código extrae el año, el mes y el día, y luego formatea la fecha en un estilo diferente.

Extracción de información de URLs

Otro caso de uso común es extraer partes de una URL. Considera el siguiente ejemplo:


Output appears here after Run.

Esta expresión regular captura el protocolo, el dominio, la ruta y la cadena de consulta por separado.

Consejos para usar grupos de captura de manera efectiva

  1. Planifica tus grupos: Piensa de antemano qué partes del patrón necesitas capturar.
  2. Usa grupos sin captura cuando sea necesario: Usa (?:...) para agrupar sin capturar y simplificar tu array de coincidencias.
  3. Grupos de captura con nombre: En JavaScript moderno (ES2018+), puedes usar grupos de captura con nombre para mejorar la legibilidad.
  4. Comportamiento de la bandera global: Al usar la bandera g con String.prototype.match(), devuelve un array de todas las cadenas coincidentes en lugar de grupos de captura. Usa String.prototype.matchAll() para una extracción detallada de grupos con la bandera global.

Grupos de captura con nombre

Los grupos de captura con nombre utilizan la sintaxis (?<name>...):


Output appears here after Run.

INFO

Es mejor usar grupos de captura con nombre para mejorar la legibilidad y tener un código más limpio.

Conclusión

Los grupos de captura en las expresiones regulares de JavaScript ofrecen una forma robusta de trabajar con patrones de cadenas complejos. Al dominar su uso, puedes realizar manipulaciones de texto sofisticadas, extraer datos significativos y manejar reemplazos con facilidad. Ya sea que estés analizando fechas, procesando URLs o reformateando cadenas, los grupos de captura brindan la flexibilidad y el poder necesarios para tareas avanzadas de procesamiento de texto. Explora estos ejemplos, practica con tus propios patrones y mejora tus habilidades en JavaScript para enfrentar cualquier desafío de manipulación de cadenas.

Práctica

¿Cuáles de las siguientes afirmaciones sobre los grupos de captura en las expresiones regulares de JavaScript son verdaderas?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.