Regex e correspondência de padrões

comparar motores de regexcom PCRE2 e RE2 reais

Escolha um motor implementado, digite o padrão e o texto e rode o teste local.

comparar motores de regex

Padrão

Digite só o corpo do padrão, sem barras /. RE2 usa Unicode internamente.

Texto de teste

Resultado

Digite ou execute um teste manual.

Padrão e texto são processados em um Worker local do navegador, sem envio ao servidor.

Opções

Digite ou execute um teste manual.

Matriz de capacidades

Somente PCRE2 e RE2 rodam aqui. Outras linhas são referências.

DestinoExecuçãoLookbehindReferência reversaLimite
PCRE2ExecutaSimSimPCRE2 WASM; API PHP à parte.
RE2ExecutaNãoNãoRE2 WASM; não é Go nem Rust.
PHP / PCRE2Só núcleo PCRE2SimSimPHP preg_* acrescenta delimitadores e retornos.
JavaSó referênciaSimSimJava não é executado aqui.
GoSó referênciaNãoNãoGo regexp é outra implementação.
RustSó referênciaNãoNãoRust regex é outra implementação.
.NETSó referênciaSimSim.NET não é executado aqui.

Ao levar um padrão do PHP para um filtro em Go, um destaque positivo no JavaScript não comprova o destino. Comparar motores de regex mantém o texto e mostra a compilação real.

Um testador de regex baseado em JavaScript não confirma uma regex PCRE nem uma regex Go RE2. A expressão regular Java pode parecer semelhante, mas exige sua própria biblioteca.

Por que comparar motores de regex

O mesmo exemplo revela quando um motor aceita e outro rejeita.

Execução de motores identificados

Comparar motores de regex aqui significa executar PCRE2 ou RE2, não trocar o nome do JavaScript. Lookbehind funciona no PCRE2 e falha no RE2.

PCRE2 destaca uma correspondência, enquanto RE2 rejeita o mesmo padrão abstrato com erro.

Nada de copiar resultado antigo

Ao mudar padrão, texto, motor ou opção, copiar e baixar ficam bloqueados até uma nova execução.

Após mudar a entrada, o relatório anterior fica apagado e a exportação é bloqueada.

Conferir o padrão sem misturar semânticas

01

Informar só o padrão

Use (?<=a)b sem barras delimitadoras. Um exemplo mostra antes quais campos serão sobrescritos; depois é possível desfazer uma vez.

  • Um padrão vazio só roda após comando explícito.
02

Escolher o motor implementado

PCRE2 vem selecionado; RE2 tem implementação WASM própria. i e m começam desligadas.

  • Não há execução automática; Ctrl/Cmd+Enter inicia o teste.
03

Ver posições e capturas

Índices começam em zero, contam unidades UTF-16 e excluem o fim. A lista cresce de 50 em 50 e o JSON inclui todo o resultado válido.

  • Limite ou tempo esgotado impede exportar saída parcial.

O que a execução revela

Diferenças verificáveis

PCRE2 aceita lookbehind e referência reversa; RE2 rejeita ambos sem calcular um resultado substituto em JS.

Grupos e posições Unicode

Cada ocorrência mostra grupos numerados e nomeados. Índices por ponto de código do RE2 são convertidos para UTF-16 após emoji.

Trabalho local com limite

O Worker pode ser interrompido após dois segundos. Tamanho, número de ocorrências e relatório também têm limites.

Até onde vai este teste

PCRE2 não é todo o PHP
Aqui roda o núcleo PCRE2; delimitadores e retorno de preg_match pertencem à camada PHP.
RE2 não é Go nem Rust
Go regexp e Rust regex têm implementação própria. A matriz não apresenta suas linhas como executadas.
Somente correspondências
Substituição, extração e divisão ficam fora porque cada motor tem tokens de troca diferentes.
Limite encerra tudo
Texto até 100000 unidades UTF-16, padrão até 2000, ocorrências até 1000, relatório até 2000000 e prazo de dois segundos.

Dúvidas ao comparar motores de regex

Qual motor de regex o testador usa?

Comparar motores de regex seleciona PCRE2 no início. PHP utiliza PCRE2, mas sua API preg_* inclui regras que esta página não reproduz.

O Go aceita lookbehind em expressões regulares?

JavaScript pode aceitar lookbehind ou referência reversa que RE2 rejeita. Para Go, confirme no pacote regexp.

Por que uma regex funciona no PHP e falha no JavaScript?

Não. RE2 apresenta erro de compilação e o resultado não é trocado pelo motor JavaScript.

Como funcionam as flags da regex?

Não necessariamente. Classes Unicode, flags e capturas variam; rode o padrão na biblioteca de destino.

Posso ver os grupos de captura?

Padrão e texto ficam em um Worker local. Só PCRE2 e RE2 são executados; Java e .NET são referências.

Ainda tem dúvidas?

Comece a comparar motores de regex

Carregue um exemplo de diferença e teste o mesmo texto no PCRE2 e no RE2.

Padrão e texto permanecem no navegador, sem envio automático.