Lição 3

Flags e modos de correspondência

Global, case-insensitive, multiline, dotAll e correspondência Unicode.

Flags mudam como o motor varre a entrada — não o que os caracteres significam. Em JavaScript, as flags aparecem após o / de fechamento ou como segundo argumento de new RegExp(pattern, flags).

Flags comuns (JavaScript)

FlagNomeEfeito
gglobalEncontra todas as correspondências, não só a primeira
iignore caseA corresponde a a
mmultiline^ e $ correspondem a limites de linha, não só aos extremos da string
sdotAll. corresponde a caracteres de nova linha
uUnicode\u{...} com consciência de Unicode e alguns property escapes
ystickyCorresponde só em lastIndex (iteração avançada)

Outras linguagens expõem switches parecidos (re.IGNORECASE, (?i), etc.) com nomes ligeiramente diferentes.

Correspondência global importa

Sem g, String.prototype.match e muitos loops com exec param na primeira ocorrência. Parsers de log e ferramentas de destaque quase sempre precisam de modo global — ou iteração explícita.

Cuidado com objetos RegExp com estado: uma regex global atualiza lastIndex. Reutilizar a mesma instância em strings não relacionadas pode pular correspondências se você não resetar lastIndex.

Arquivos de log multiline

Arquivos de log têm muitas linhas. Com m, ^ERROR corresponde a linhas que começam com ERROR, que é o que você geralmente quer. Sem m, ^ muitas vezes significa só o início do blob inteiro.

Combine com g para encontrar toda linha de erro em um texto colado.

DotAll e conteúdo colado

Entrada do usuário e strings JSON podem incluir \n. Por padrão . não cruza linhas; s (dotAll) permite que . as corresponda — útil para padrões “qualquer coisa até a tag de fechamento” quando você aceita o risco de over-matching.

Unicode e texto internacional

Nomes de usuário, cidades e slugs podem incluir letras não ASCII. A flag u habilita tratamento correto de pares substitutos e classes \p{...} no JavaScript moderno.

Sem consciência de Unicode, \w pode ignorar caracteres válidos em apps internacionalizados.

Conclusão

Quando um padrão “funciona em uma linha mas não no arquivo”, verifique as flags primeiro — especialmente g, m e s. Depois revise âncoras e greediness.

Voltar à visão geral do curso