Lecciones del módulo (3/4)
Grupos de no captura: `(?:...)`
A menudo se necesitan paréntesis solo para agrupar (cuantificar, alternar) y NO para extraer el valor. En ese caso, usa la versión de no captura: (?:...). Funciona de forma idéntica a (...) pero no crea un grupo numerado.
Pattern: (?:https?)://(\w+\.\w+)
Sample: https://example.com e http://test.org
Match e gruppi:
match = "https://example.com" gruppo1 = "example.com"
match = "http://test.org" gruppo1 = "test.org"(?:https?) agrupa el esquema para aplicar el cuantificador ?, pero no nos interesa extraer https como un grupo: el grupo 1 es directamente el dominio.
Por qué usarlo
- Legibilidad: el lector comprende inmediatamente que el grupo solo está ahí por estructura, no para extraer un valor.
- Rendimiento: el motor no tiene que almacenar la coincidencia del grupo.
- Numeración limpia: los grupos numerados se mantienen alineados con la "información que realmente necesito", sin interferencias.
Optimización con grupos de no captura
El uso de (?:...) le indica al motor que aplique las reglas de agrupación y cuantificación sin desperdiciar memoria almacenando resultados de coincidencia intermedios. Esto es altamente recomendado en bucles pesados o en el procesamiento de textos muy largos.
Pruébalo tú
Extrae el dominio (`example.com`, `test.org`…) de cada URL en el texto. Usa `(?:https?)` para el protocolo (no es necesario capturarlo) y un único grupo para el dominio.
Mostrar pista
Cambia el primer grupo de (https?) a (?:https?): no hay necesidad de capturarlo, solo quieres el dominio.
Solución disponible después de 3 intentos
Ejercicio de repaso
Encuentra cada repetición de `ab` como una sola coincidencia, pero SIN capturar el grupo (ya que solo necesitas la coincidencia completa).
Mostrar pista
Misma sintaxis que la lección anterior, pero con (?:ab)+ en lugar de (ab)+.
Solución disponible después de 3 intentos
Desafío adicional
Encuentra dígitos de precio seguidos opcionalmente por partes decimales dentro de un grupo de no captura, ej. `100` o `100.50`.
Mostrar pista
Usa (?:\.\d{2})? para hacer que la parte decimal sea opcional sin capturarla.
Solución disponible después de 3 intentos