Por que testar suas regex online?
Uma regex escrita "de cabeça" raramente funciona na primeira tentativa. Edge cases Unicode, diferenças entre motores e erros de escape geram bugs silenciosos em produção. Testar online antes do deploy economiza horas de depuração.
Três situações em que esta ferramenta resolve seu problema:
- Validar antes de integrar → Confirme que sua regex captura exatamente o esperado, sem falsos positivos
- Depurar um padrão existente → Descubra por que uma regex não captura as substrings corretas
- Garantir compatibilidade RE2 → Verifique que seu padrão funciona no motor RE2 do Go antes do deploy
Como usar o regex tester em 3 passos
Passo 1: Inserir o padrão
Digite sua expressão regular no campo dedicado. Exemplo para extrair domínios de um registro SPF:
include:(?P<domain>[a-z0-9._-]+)
Passo 2: Colar o texto de teste
Cole o texto contra o qual você quer testar sua regex:
v=spf1 include:_spf.captaindns.com include:spf.protection.outlook.com ~all
Ative os flags conforme necessário: sem distinção de maiúsculas, multilinha, dot-all ou non-greedy.
Passo 3: Ler os resultados
Cada correspondência aparece com três informações: posição byte no texto, conteúdo correspondido e grupos de captura. Grupos nomeados são identificados pelo nome, não pelo índice.
O que é uma expressão regular?
Uma expressão regular (regex) é um padrão que descreve um conjunto de cadeias de caracteres. Ela permite pesquisar, validar ou extrair texto segundo regras precisas. Desenvolvedores usam regex diariamente para parsing, validação e transformação de dados.
Componentes fundamentais:
| Elemento | Sintaxe | Exemplo | Resultado |
|---|---|---|---|
| Caractere literal | a | abc em "abcdef" | corresponde "abc" |
| Classe de caracteres | [a-z] | [0-9]+ em "porta 443" | corresponde "443" |
| Quantificador | +, *, ? | a+ em "aab" | corresponde "aa" |
| Grupo de captura | (...) | (abc) em "xabcx" | captura "abc" |
| Âncora | ^, $ | ^v=spf1 | corresponde no início da linha |
| Alternância | a|b | cat|dog em "my cat" | corresponde "cat" |
Exemplo concreto com grupos nomeados:
(?P<protocol>https?)://(?P<domain>[a-z0-9.-]+)
Aplicado a https://captaindns.com/tools:
- Grupo
protocol:https - Grupo
domain:captaindns.com
Sintaxe RE2 vs PCRE: as diferenças
O motor RE2, criado pelo Google e usado pelo Go, difere do PCRE (PHP, JavaScript, Python) em pontos críticos. A principal diferença: RE2 garante tempo de execução linear. PCRE não oferece essa garantia.
| Funcionalidade | RE2 | PCRE |
|---|---|---|
| Tempo de execução garantido | Linear O(n) | Exponencial possível |
| Lookahead/lookbehind | Não suportado | Suportado |
Backreferences (\1) | Não suportado | Suportado |
| Quantificadores possessivos | Não suportado | Suportado |
| Grupos nomeados | (?P<nome>...) | (?P<nome>...) ou (?<nome>...) |
| Flag non-greedy global | (?U) | Não padrão |
| Unicode | Nativo (UTF-8) | Via flag u |
Por que isso importa? A garantia de tempo linear do RE2 elimina ataques ReDoS (Regular Expression Denial of Service). Por isso o RE2 é a escolha padrão para serviços web expostos à Internet.
Casos de uso reais
Validar um registro SPF
Situação: Você quer verificar se o registro SPF do seu domínio contém os mecanismos include corretos.
Diagnóstico: Teste o padrão include:([a-z0-9._-]+) contra o valor do seu registro TXT. A ferramenta lista cada domínio incluído com sua posição byte.
Ação: Compare os domínios extraídos com sua lista esperada. Detecte includes ausentes ou incorretos antes que afetem a entregabilidade dos seus emails.
Extrair endereços de email de um texto
Situação: Você precisa extrair todos os endereços de email de um arquivo de configuração ou log.
Diagnóstico: Use o padrão [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} com o flag sem distinção de maiúsculas. Cada email encontrado aparece como uma correspondência distinta.
Ação: Exporte os endereços extraídos e verifique se cada um é legítimo. Remova duplicatas e endereços malformados.
Depurar um padrão de log parsing
Situação: Seu parser de logs não captura o timestamp no formato correto.
Diagnóstico: Teste com grupos nomeados: (?P<date>\d{4}-\d{2}-\d{2}) (?P<time>\d{2}:\d{2}:\d{2}). Verifique se cada grupo captura a substring esperada.
Ação: Ajuste quantificadores ou classes de caracteres até que cada grupo extraia o valor correto. Copie o padrão validado para seu código.
Erros de sintaxe comuns
| Erro | Causa | Correção |
|---|---|---|
error parsing regexp | Parêntese não fechado ou quantificador sem alvo | Verifique parênteses e colchetes |
invalid escape sequence | Sequência de escape não reconhecida no RE2 | Use \\ para uma barra invertida literal |
invalid named capture | Sintaxe incorreta para grupo nomeado | Use (?P<nome>...) (não (?<nome>...)) |
invalid repeat count | Quantificador fora dos limites aceitos | Reduza o valor do quantificador |
| Nenhum resultado | Padrão muito restritivo ou flag ausente | Ative sem distinção de maiúsculas ou dot-all |
❓ FAQ - Perguntas frequentes
Q: Por que minha regex não encontra nenhuma correspondência?
R: Três causas possíveis. Primeira: a sintaxe RE2 não suporta lookahead, lookbehind nem backreferences. Segunda: o flag "sem distinção de maiúsculas" pode estar desativado. Terceira: caracteres especiais não escapados invalidam o padrão.
Q: O que é a sintaxe RE2?
R: RE2 é o motor regex do Go, criado pelo Google. Ele garante tempo de execução linear em relação ao tamanho da entrada. Diferente do PCRE, o RE2 não é vulnerável a ataques ReDoS.
Q: Quais flags regex estão disponíveis?
R: Quatro flags: sem distinção de maiúsculas (i), multilinha (m), dot inclui newline (s) e non-greedy (U). Cada flag modifica o comportamento do motor para todo o padrão.
Q: Qual é o limite de tamanho do texto?
R: O padrão é limitado a 10 KB. O texto de teste aceita até 1 MB. O máximo de correspondências retornadas é 1.000. Esses limites protegem o serviço contra abusos.
Q: O que é um grupo de captura nomeado?
R: Um grupo nomeado usa a sintaxe (?P<nome>...) no RE2. Ele extrai uma substring identificada por um nome, não por um índice numérico. Essencial para padrões complexos com vários grupos.
Q: O RE2 é compatível com as regex JavaScript?
R: Parcialmente. O RE2 suporta classes de caracteres, quantificadores e grupos. Funcionalidades ausentes: lookahead, lookbehind, backreferences e quantificadores possessivos.
Q: Os dados são armazenados?
R: Não. Seu padrão e texto são enviados à API CaptainDNS, processados e excluídos imediatamente. Nenhum conteúdo é armazenado ou registrado em log.
Ferramentas complementares
| Ferramenta | Utilidade |
|---|---|
| Hash Generator | Calcular o hash de um texto correspondido pela sua regex |
| Codificador/decodificador Base64 | Decodificar um texto Base64 antes de testá-lo com regex |
| Codificador/decodificador URL | Decodificar URLs codificadas antes da extração regex |
| Conversor de caixa | Normalizar a caixa de um texto antes de aplicar sua regex |
| Inspetor SPF | Verificar os registros SPF que você valida por regex |
Recursos úteis
- RE2 syntax reference (sintaxe completa do motor RE2)
- RFC 7208 - SPF (formato dos registros SPF testáveis por regex)
- Regular-Expressions.info (tutorial completo sobre expressões regulares)
Compromisso de privacidade
Seu padrão e texto são enviados à API CaptainDNS unicamente para executar o teste regex. Nenhum conteúdo é armazenado após o processamento. Apenas métricas técnicas anônimas são registradas: tamanho do padrão, número de correspondências e duração da execução.