O que você precisa decidir antes do padrão
Regex é especialmente útil em logs quando a linha tem uma estrutura conhecida e você quer extrair timestamp, nível, request ID ou outros campos.
Pense no problema antes de escrever Regex
Um padrão fica mais simples quando a regra já está clara. Para este caso, siga esta sequência:
- 01Comece com uma linha real de log e marque visualmente cada campo necessário.
- 02Use grupos nomeados para evitar depender da ordem de muitos grupos numerados.
- 03Prefira formatos de log estruturados, como JSON, quando você controla a origem.
Filtrar níveis de log
^(?:INFO|WARN|ERROR)\b
A âncora evita encontrar ERROR no meio de uma mensagem comum.
Nível mais data ISO
^(?<nivel>INFO|WARN|ERROR)\s+(?<data>\d{4}-\d{2}-\d{2})Grupos nomeados deixam o parser mais claro e aparecem separadamente no Raio-X.
Extrair requestId
\brequestId=(?<id>[A-Za-z0-9-]+)
Esse padrão funciona bem para procurar correlações entre linhas de log.
Não dependa de Regex para tudo
Se o log já é JSON estruturado, parsear JSON costuma ser melhor do que extrair campos com Regex. Use Regex para texto semi-estruturado, buscas ad hoc e filtros.
Como ler o padrão em partes
Em vez de memorizar a expressão inteira, leia cada bloco pela responsabilidade que ele cumpre:
(?INFO|WARN|ERROR) nomeia o nível e restringe valores conhecidos.\S+captura uma sequência sem espaços; útil para IDs simples..*?quantificador não guloso pode ajudar, mas deve ser usado com delimitadores claros.^ ... $evita interpretar pedaços arbitrários de uma linha como um registro completo.Onde Regex agrega valor aqui
Excelente para logs legados e extrações pontuais. Para novos sistemas, logs estruturados costumam ser mais confiáveis para máquinas.
Erros comuns
- Usar .* para tudo e perder a estrutura do log.
- Criar parser de Regex para JSON quando um parser JSON já resolve melhor.
- Não considerar multiline quando stack traces fazem parte da entrada.
- Alterar o formato do log sem atualizar testes dos padrões.
Teste e pratique
Use o Playground para experimentar o padrão com seus próprios dados e depois leve o conceito para as fases do jogo, onde os casos positivos e negativos são avaliados automaticamente.