Regex e correspondência de padrões

testador de regex Pythonconfira o resultado real de re

Digite um padrão e um texto; rode busca, correspondência completa ou substituição com o Python.

testador de regex Python

Padrão

Texto de teste

Resultado

Digite ou execute um teste manual.

Padrão e texto ficam neste navegador. Os arquivos Python carregam na primeira execução.

Opções

i, m, s, x, a uma vez cada; sem flag g do JavaScript.
  • i — Ignorar maiúsculas
  • m — ^ e $ nos limites das linhas
  • s — Ponto inclui quebra de linha
  • x — Espaços e comentários no padrão
  • a — Classes de caracteres ASCII

Ambiente Python: carrega no primeiro teste

Limites: padrão 2000, texto 100000, substituição 10000 unidades UTF-16; 10000 ocorrências, um milhão de saída e quatro milhões de relatório. Para após dois segundos.

Digite ou execute um teste manual.

Uma expressão pode funcionar num teste de JavaScript e falhar no código Python. Este testador de regex Python roda CPython re, então grupos nomeados, flags e referências na substituição seguem o comportamento de verdade.

Ao usar um testador de expressões regulares, compare finditer, search e fullmatch. Os grupos de captura usam posições em pontos de código Unicode; a substituição de regex Python usa \g<name>, e não $1.

Por que usar este testador de regex Python

Veja exatamente o que cada grupo capturou

O testador de regex Python separa a correspondência inteira dos grupos numerados e nomeados. Um grupo que não participou aparece como null e (-1, -1); capturar uma string vazia continua diferente.

Uma faixa azul de correspondência inclui duas capturas coloridas ligadas a cartões de resultado separados.

Prévia de substituição sem alterar a entrada

Com \g<sobrenome> e \g<nome>, re.subn reorganiza os campos numa saída à parte. Contagem zero significa substituir todas as ocorrências; o texto original continua intacto.

Dois trechos coloridos trocam de lugar na prévia à direita enquanto o texto original fica à esquerda.

Confira os detalhes de re que mudam o resultado

01

Escolha o alcance da busca

finditer lista ocorrências sem sobreposição, search retorna a primeira e fullmatch exige o texto inteiro. Não há flag g de JavaScript neste modo.

02

Ajuste as flags antes de rodar

i, m, s, x e a são flags do Python re. m muda os limites de linha de ^ e $; s permite que o ponto atravesse quebras. O Python carrega na primeira execução manual.

03

Leia índices antes de exportar

Os intervalos começam em zero, não incluem o fim e contam pontos de código Unicode. Em A😀B, B começa no índice Python 2. Ctrl/Cmd + Enter executa de novo.

O que o relatório mostra

Motor CPython re real

O testador de regex Python carrega Pyodide num Worker e informa a versão real do Python. Ele não chama RegExp do JavaScript de Python.

Grupos com limites exatos

Cada ocorrência guarda grupo zero, números, nomes, valores e intervalos. Índices de código Unicode são convertidos para UTF-16 antes de destacar texto com emoji.

Substituição no formato Python

re.subn expande \1 e \g<name>. Um modelo vazio remove ocorrências; $1 continua texto literal. A entrada original não é sobrescrita.

Exportação completa

Somente uma execução concluída permite copiar ou baixar JSON com padrão, flags, operação, versão e todas as ocorrências. A saída substituída pode virar TXT.

Limites desta execução com re

Apenas um motor
O testador de regex Python usa CPython re com texto Unicode. Não alterna para PCRE2, JavaScript ou o pacote Python regex de terceiros.
Sem execução automática
Padrões demorados começam apenas por comando. Depois que o Python carrega, dois segundos de cálculo encerram o Worker; resultados parciais não viram falsos zeros.
Flags de Python, não de JavaScript
Aceita i, m, s, x e a uma vez cada. g, u e y não são opções deste padrão de string Python; finditer faz a busca de todas as ocorrências.
Tamanhos limitados
Padrão até 2000, texto até 100000 e modelo de substituição até 10000 unidades UTF-16. Mais de 10000 ocorrências ou saídas e relatórios grandes demais fazem toda a execução falhar.
Sem executar código do usuário
Só operações fixas de re rodam. Não há execução de scripts Python, importação de arquivos, consulta a URL ou links com o texto de teste.
Resultado de substituição separado
re.subn gera uma prévia. Exemplo e Limpar mudam a entrada somente após confirmação, e é possível desfazer uma vez.

Perguntas sobre o testador de regex Python

Por que o padrão funciona no regex101 e falha no Python?

Confira o motor selecionado no regex101; PCRE2 pode ser o padrão. Aqui roda CPython re, que escreve grupo nomeado como (?P<name>...).

Posso testar uma substituição com Python re.sub?

Sim. Escolha Substituir e informe \g<name> ou \1. $1 não vira referência a grupo no Python; o texto original fica intacto.

Posso ver ocorrências e grupos de Python online?

Sim. As ocorrências são destacadas, com valores e posições dos grupos. Uma ocorrência de largura zero recebe um marcador visível.

Por que .*? às vezes é mais seguro do que .*?

A versão não gulosa tenta primeiro um trecho menor; a gulosa tenta um maior. Nenhuma garante execução rápida, então teste casos extremos.

Qual é a diferença entre (...) e (?:...)?

As duas formas agrupam partes do padrão, mas só (...) cria um grupo numerado que pode ser referenciado numa substituição.

Ainda tem dúvidas?

Teste um caso real no testador de regex Python

Compare uma entrada que deve corresponder com outra que não deve e confira grupos e versão antes de exportar.