Aula 09 – Modificadores (Flags) 🚩
Até agora, aprendemos a sintaxe estrutural. As Flags (ou Modificadores) são configurações globais que mudam o comportamento de como o motor de Regex processa o texto.
🏳️ As Flags Mais Comuns
Elas geralmente são colocadas após a barra final de um Regex: /padrão/flags.
| Flag | Nome | Descrição |
|---|---|---|
| i | Ignore Case | Ignora a diferença entre Maiúsculas e Minúsculas. |
| g | Global | Encontra todas as ocorrências, não apenas a primeira. |
| m | Multiline | Faz as âncoras ^ e $ funcionarem para cada linha. |
| s | Dot All | Faz o ponto . dar match também em quebras de linha (\n). |
🔄 Global (g) vs Single Match
Sem a flag global, o Regex para assim que encontra o primeiro resultado.
- Texto:
casa, casa, casa - Padrão
/casa/: Encontra apenas a primeira "casa". - Padrão
/casa/g: Encontra as três instâncias.
📊 Resumo Visual das Flags
graph TD
P["Padrão: /erro/"] --> NoFlag["Sem Flags: Encontra 'erro' (1ª vez)"]
P --> FlagI["Flag 'i': Encontra 'erro', 'ERRO', 'Erro'"]
P --> FlagG["Flag 'g': Encontra todas as vezes"]
P --> FlagM["Flag 'm': ^ e $ olham cada linha"]
💻 Exemplo em TermynalJS
Em comandos de terminal, as flags costumam ser opções (como -i para ignore case).
$ # Buscando por "admin" ignorando caixa
$ grep -i "admin" usuarios.txt
$ Admin
$ ADMIN
$ admin_01
📝 Exercícios de Fixação
- Básico: No Regex101, busque por "regex" em um parágrafo e ative a flag
g. Observe os múltiplos destaques. - Básico: Ative a flag
ie tente dar match em "TEXTO" usando o padrãotexto. - Intermediário: Use a flag
mpara encontrar o início de cada linha em um texto com vários parágrafos. - Intermediário: Qual flag você usaria para garantir que o ponto
.capture todo o conteúdo de um arquivo HTML, incluindo as quebras de linha? - Desafio: No Regex101, experimente combinar flags:
/padrao/gi. O que isso faz?
🚀 Mini-Projeto: Limpador de Logs
Objetivo: Destacar todas as linhas que contenham erros, independente da caixa.
- Texto:
- Regex:
^.*error.*$ - Flags necessárias:
g(para pegar todos),i(para pegar as variações de 'error') em(para o^e$olharem cada linha).