Lição 5

Fluxo de depuração de regex

Fixtures, destaques, riscos de backtracking e erros comuns.

Regex confiável é orientada a testes. Trate padrões como código: exemplos entram, matches esperados saem.

Passo 1: Colete fixtures representativas

Reúna inputs que devem casar e inputs que não devem casar:

  • Amostras felizes de logs de produção (redija segredos)
  • Casos limite: strings vazias, Unicode, espaços extras, campos ausentes
  • Falsos positivos conhecidos que você já viu uma vez

Um destaque verde numa string de demo não é suíte de testes.

Passo 2: Estreite o padrão incrementalmente

Comece ancorado e estrito, depois relaxe:

  1. Case um prefixo fixo com ^
  2. Adicione classes de caractere para trechos variáveis
  3. Adicione quantificadores só onde o comprimento realmente varia
  4. Ligue i ou u só quando o requisito exigir

Se o padrão casa demais, aperte antes de adicionar exclusões com negative lookaheads.

Passo 3: Inspecione grupos de captura

Para cada match, verifique se os valores dos grupos mapeiam aos campos que você acha ter parseado. Bugs off-by-one em $n no replace são comuns.

Use preview de replace para confirmar saída reordenada em cada linha de fixture.

Passo 4: Observe backtracking catastrófico

Quantificadores aninhados como (.*)* em input grande podem travar engines. Sintomas:

  • Aba do navegador trava ao colar
  • Passo de lint no CI estoura tempo

Correções incluem quantificadores possessivos/lazy, grupos atômicos (onde suportado) ou reescrever para evitar sanduíches de .*.

Checklist de erros comuns

ErroSintoma
Esqueceu gSó a primeira linha destaca
. sem sJSON multilinha falha
$ sem escape no replace$1 literal inserido errado
\w para texto internacionalPerde nomes válidos
Parsear formatos aninhadosFalsos positivos em HTML/JSON

Conclusão

Entregue regex com fixtures, flags documentadas e preview de replace no tamanho real da colagem. Quando a complexidade crescer, migre para um parser — regex deve ser o bisturi, não o martelo.

Voltar à visão geral do curso