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.

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 é.

Faz parte da suite oLoveTools
oLoveTools

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

© 2026 oLoveToolsSobre

RegexFlow

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.

Encontre a próxima ferramenta

Abrem noutra aba para manter o trabalho atual.