Lição 4
Grupos de captura e substituição
Agrupamento, backreferences e templates de substituição.
Grupos de captura permitem que a regex lembre partes do match. Essa memória alimenta extração, decomposição de validação e find-and-replace estruturado.
Grupos numerados
Parênteses criam grupos numerados da esquerda para a direita:
Padrão: (\d{4})-(\d{2})-(\d{2}) em 2026-05-28
| Grupo | Valor |
|---|---|
$1 / \1 | 2026 |
$2 | 05 |
$3 | 28 |
Em callbacks de replace em JavaScript, match[1], match[2], … guardam os mesmos valores.
Grupos não capturantes
Quando você precisa agrupar sem armazenar captura, use (?: ... ):
(?:https?):// agrupa a alternativa do scheme sem ocupar $1.
Isso mantém templates de substituição estáveis quando você adiciona prefixos opcionais depois.
Backreferences
\1 dentro do padrão refere ao que o grupo 1 casou. Exemplo clássico: (['"]).*?\1 casa strings entre aspas com a mesma abertura e fechamento.
Backreferences são poderosas e fáceis de usar mal em estruturas aninhadas — outro motivo para não parsear HTML só com regex.
Templates de substituição
Editores e linguagens usam $1, $2 ou $& (match inteiro) em strings de replace:
- Transformar
user_id=123emuserId: 123com padrão cheio de capturas - Normalizar datas de
DD/MM/YYYYparaYYYY-MM-DDreordenando grupos
Sempre pré-visualize substituições em várias linhas, incluindo campos vazios e espaçamento inesperado.
Grupos nomeados (JavaScript moderno)
(?<year>\d{4}) expõe match.groups.year. Grupos nomeados melhoram legibilidade em padrões longos.
Conclusão
Projete padrões para cada captura mapear um campo semântico. Se o replace precisar de dez referências $n, simplifique o padrão ou use um parser.