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

GrupoValor
$1 / \12026
$205
$328

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=123 em userId: 123 com padrão cheio de capturas
  • Normalizar datas de DD/MM/YYYY para YYYY-MM-DD reordenando 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.

Voltar à visão geral do curso