oLoveTools
Motor regex isolado

Testador, depurador e explicador de expressões regulares online

Crie, teste e depure expressões regulares com uma árvore sintática de verdade, as posições de cada grupo de captura, avisos de backtracking catastrófico e exportação de código para dez linguagens, tudo dentro do seu separador.

Cada correspondência com as suas posições e grupos
O padrão explicado como árvore, não como lista plana
Padrões descontrolados são mortos, não deixados a congelar o separador
Exporta para JavaScript, Python, Go, Rust e mais seis
Expressão regular
/
/
VálidaSem correspondênciasIsolado
  • Dentro de [ ] o ponto já é literal, por isso escapá-lo é desnecessário.
Texto de teste

Clique num destaque para selecionar essa correspondência. Mantenha Alt para ver o texto em bruto; F3 e Shift+F3 percorrem as correspondências.

Continuar
Correspondências

Sem correspondências

O padrão é válido, só não ocorre neste texto. Verifique as flags: sem g apenas a primeira correspondência é reportada.

O que este padrão faz
  • [\w.%+-]+Repete uma ou mais vezes — ganancioso: apanha tudo o que pode e só devolve se for mesmo obrigado
    • [\w.%+-]Qualquer caractere de: \w . % + -
  • @O caractere «@»
  • [\w.-]+Repete uma ou mais vezes — ganancioso: apanha tudo o que pode e só devolve se for mesmo obrigado
    • [\w.-]Qualquer caractere de: \w . -
  • \.O caractere «.», tomado à letra
  • [A-Za-z]{2,}Repete pelo menos 2 vezes — ganancioso: apanha tudo o que pode e só devolve se for mesmo obrigado
    • [A-Za-z]Qualquer caractere de: A–Z a–z

Como funciona

1

Escreva o padrão

Escreva-o, escolha um da biblioteca, ou cole uma ligação que lhe tenham partilhado. O padrão é colorido conforme o que cada peça é de facto, e os erros ficam sublinhados onde acontecem.

2

Ajuste flags e modo

Ligue g, i, m, s, u, v, y e d, e depois escolha se está a procurar, a substituir ou a dividir. Desligue o modo ao vivo se preferir que nada corra até carregar no botão.

3

Execute em segurança

A procura acontece num Web Worker com um limite de dois segundos. Cada correspondência volta com as suas posições e os seus grupos, e o painel avisa-o antes de um padrão que podia não acabar nunca.

4

Leve-o consigo

Copie a regex, exporte as correspondências em JSON ou CSV, gere o código equivalente para dez linguagens, ou envie o resultado diretamente para outra ferramenta oLoveTools.

Um parser, não um tokenizador

O padrão é analisado numa árvore sintática de verdade, por isso a explicação mostra o que contém o quê — e acerta nos grupos nomeados. Um tokenizador lê (?<year>\d{4}) como um grupo de captura seguido de um algo opcional; um parser lê o grupo nomeado que aquilo é.

O motor corre onde pode ser morto

A procura acontece num Web Worker com temporizador de vigia. Medido aqui, (a+)+$ contra 31 caracteres leva mais de quatro minutos de CPU pura no mesmo motor que o seu navegador usa. Na página isso é um separador morto; num worker é uma execução terminada ao fim de dois segundos.

Correspondências com posições reais

A flag d é ligada nos bastidores, por isso cada grupo de captura traz onde começa e onde acaba, não só o que apanhou. É isso que pinta os grupos dentro de uma correspondência destacada e o deixa saltar da lista para os caracteres exatos.

Avisa antes de se queimar

Quantificadores aninhados sobre caracteres que se sobrepõem, quantificadores à volta de algo que pode não consumir nada, retrorreferências para grupos que não existem, \p{…} sem a flag u e lookbehind num navegador velho de mais — tudo assinalado antes de correr o que quer que seja.

Exporta para dez linguagens

JavaScript, TypeScript, Python, Java, C#, PHP, Go, Rust, Ruby e grep/sed, com as flags traduzidas como deve ser e a substituição reescrita na sintaxe própria de cada linguagem. Os excertos de Go e Rust dizem-no quando o padrão usa algo que o RE2 não sabe fazer.

Encadeada com o resto da suite

Envie o texto substituído, as partes divididas ou as correspondências em JSON diretamente para o WordFlow, DiffSnap, JSONFlow, CodeCard ou HashBolt — sem passar pela pasta de transferências.

testador de regex

Um testador de regex que não consegue pendurar o navegador

As expressões regulares são a única coisa que um testador tem de executar antes de estarem corretas, e uma incorreta pode ser patológica: um padrão como (a+)+$ contra uma cadeia que quase corresponde leva tempo exponencial, e o motor do navegador não tem forma de se interromper. O RegexFlow executa cada procura dentro de um Web Worker com uma vigia de dois segundos. Se a execução se alonga, o worker é terminado e substituído, e recebe uma mensagem em vez de um separador congelado com o seu padrão preso lá dentro.

Grupos de captura com nomes e posições
Substituir e dividir, não só procurar
Avisos de backtracking antes de executar
Dez linguagens de destino

Nada sai do separador

O padrão, o texto de teste, a substituição e qualquer ficheiro que abra são processados inteiramente no seu navegador — não há upload nem ida e volta a um servidor. Os ficheiros são lidos com o próprio FileReader do navegador. A única coisa que pode sair é uma ligação para partilhar, e só quando carrega no botão que a constrói.

De um padrão que funciona a código que funciona

Feito para depurar, não para a demonstração

Análise de logs que tem de sobreviver a uma linha malformada, validação que tem de rejeitar tanto como aceitar, um procurar-e-substituir por todo um repositório onde $1 tem de cair no sítio certo, e aquele momento em que herda o padrão de quarenta caracteres de outra pessoa e precisa de saber o que faz antes de lhe tocar. A árvore de explicação, as posições e a tabela de grupos são para esse momento.

O motor é aquele contra o qual vai publicar

A procura usa o RegExp do seu próprio navegador, por isso o que vê é exatamente o que o seu JavaScript vai fazer — incluindo as partes que variam, e é por isso que a ferramenta verifica o suporte de lookbehind e de unicodeSets em vez de o assumir. Quando exporta para Python, Go ou Rust, as diferenças são explicadas em vez de produzirem em silêncio um excerto que não compila.

Perguntas frequentes

QO meu padrão ou o meu texto de teste são enviados para algum lado?

Não. Tudo corre em JavaScript dentro do seu separador, incluindo os ficheiros que abre: são lidos com o FileReader do navegador e nunca enviados. Pode desligar-se da internet e a ferramenta continua a funcionar.

QO que acontece se escrever um padrão que nunca acaba?

É morto. A procura corre num Web Worker com uma vigia de dois segundos; se o worker não responder a tempo é terminado e um novo ocupa o lugar. Isto importa mais do que parece: medido no mesmo motor que o seu navegador usa, (a+)+$ contra 31 caracteres correu mais de quatro minutos. No fio principal isso é um separador que não recupera.

QQue motor de expressões regulares é usado?

O RegExp nativo do seu navegador, por isso o que testa é exatamente o que o seu JavaScript vai fazer. Onde o suporte varia, a ferramenta verifica em vez de assumir: lookbehind (o Safari só o acrescentou na 16.4), a flag v para unicodeSets e a flag d para as posições dos grupos. Se faltar alguma, é-lhe dito, em vez de lhe mostrarem um erro confuso.

QPorque é que a explicação do padrão é uma árvore?

Porque uma lista plana não consegue dizer o que está dentro de quê, e porque um tokenizador erra onde um parser não erra: (?<year>\d{4}) é um grupo nomeado, não um grupo de captura seguido de um caractere opcional. Cada linha está ligada aos caracteres exatos que descreve, por isso passar o rato numa delas destaca-os no padrão.

QA substituição suporta $1 e grupos nomeados?

Sim: de $1 a $99, $<nome>, $& para a correspondência inteira, $` e $' para o texto à volta, e $$ para um cifrão literal. Cada token que escreve aparece listado por baixo com aquilo em que se vai tornar, e o código gerado reescreve-os na sintaxe própria de cada destino — \g<nome> para Python, ${nome} para Java e C#.

QPosso usá-lo num ficheiro grande?

Sim, mas acima dos 40 000 caracteres a ferramenta deixa de reavaliar sozinha e espera que carregue em Executar — procurar num ficheiro grande a cada tecla é trabalho desperdiçado. Também pode desligar o modo ao vivo em qualquer tamanho e ficar totalmente em manual.

QPorque é que o código Go gerado vem com um aviso?

Go e Rust usam RE2, que é de tempo linear por desenho e por isso não tem lookahead, nem lookbehind, nem retrorreferências. Se o seu padrão usar algum deles, o excerto é mostrado à mesma, mas com uma nota a dizer que não compila tal como está — o que é mais útil do que um excerto que falha em silêncio.

QO que significam as cores no texto de teste?

Cada correspondência tem contorno fúcsia e a selecionada fica mais viva. Dentro da selecionada, os grupos de captura têm o seu próprio trecho violeta, por isso vê exatamente que caracteres foram parar a $1. Mantenha Alt para esconder todos os destaques e ler o texto tal como ele é.

Pesquisas relacionadas

testador de regextestar expressão regulardepurador de regexexplicar expressão regularconstrutor de regex onlinesubstituir com regexbacktracking catastróficoregex para pythontestador regex javascriptgrupos de captura nomeados
Faz parte da suite oLoveTools
oLoveTools

Uma bancada gratuita, privada e local para expressões regulares.

© 2026 oLoveToolsSobre

RegexFlow | Testador e depurador de expressões regulares grátis

Testador de regex gratuito com destaque ao vivo, posições dos grupos de captura, explicação em árvore, avisos de backtracking e exportação para Python, Go, Java e mais. 100% no seu navegador.

Perguntas frequentes

O meu padrão ou o meu texto de teste são enviados para algum lado?

Não. Tudo corre em JavaScript dentro do seu separador, incluindo os ficheiros que abre: são lidos com o FileReader do navegador e nunca enviados. Pode desligar-se da internet e a ferramenta continua a funcionar.

O que acontece se escrever um padrão que nunca acaba?

É morto. A procura corre num Web Worker com uma vigia de dois segundos; se o worker não responder a tempo é terminado e um novo ocupa o lugar. Isto importa mais do que parece: medido no mesmo motor que o seu navegador usa, (a+)+$ contra 31 caracteres correu mais de quatro minutos. No fio principal isso é um separador que não recupera.

Que motor de expressões regulares é usado?

O RegExp nativo do seu navegador, por isso o que testa é exatamente o que o seu JavaScript vai fazer. Onde o suporte varia, a ferramenta verifica em vez de assumir: lookbehind (o Safari só o acrescentou na 16.4), a flag v para unicodeSets e a flag d para as posições dos grupos. Se faltar alguma, é-lhe dito, em vez de lhe mostrarem um erro confuso.

Porque é que a explicação do padrão é uma árvore?

Porque uma lista plana não consegue dizer o que está dentro de quê, e porque um tokenizador erra onde um parser não erra: (?<year>\d{4}) é um grupo nomeado, não um grupo de captura seguido de um caractere opcional. Cada linha está ligada aos caracteres exatos que descreve, por isso passar o rato numa delas destaca-os no padrão.

A substituição suporta $1 e grupos nomeados?

Sim: de $1 a $99, $<nome>, $& para a correspondência inteira, $` e $' para o texto à volta, e $$ para um cifrão literal. Cada token que escreve aparece listado por baixo com aquilo em que se vai tornar, e o código gerado reescreve-os na sintaxe própria de cada destino — \g<nome> para Python, ${nome} para Java e C#.

Posso usá-lo num ficheiro grande?

Sim, mas acima dos 40 000 caracteres a ferramenta deixa de reavaliar sozinha e espera que carregue em Executar — procurar num ficheiro grande a cada tecla é trabalho desperdiçado. Também pode desligar o modo ao vivo em qualquer tamanho e ficar totalmente em manual.

Porque é que o código Go gerado vem com um aviso?

Go e Rust usam RE2, que é de tempo linear por desenho e por isso não tem lookahead, nem lookbehind, nem retrorreferências. Se o seu padrão usar algum deles, o excerto é mostrado à mesma, mas com uma nota a dizer que não compila tal como está — o que é mais útil do que um excerto que falha em silêncio.

O que significam as cores no texto de teste?

Cada correspondência tem contorno fúcsia e a selecionada fica mais viva. Dentro da selecionada, os grupos de captura têm o seu próprio trecho violeta, por isso vê exatamente que caracteres foram parar a $1. Mantenha Alt para esconder todos os destaques e ler o texto tal como ele é.

Pesquisas relacionadas

testador de regex, testar expressão regular, depurador de regex, explicar expressão regular, construtor de regex online, substituir com regex, backtracking catastrófico, regex para python, testador regex javascript, grupos de captura nomeados