Pular para o conteúdo
Toolbench

Tente: comprimir pdf, foto do iphone, 15% de 240

    Testador de regex

    Digite o padrão e veja o que ele pega, com os grupos.

    Ocorrências

    A resposta aparece aqui enquanto você digita.

    Guia: O padrão, o texto e o que ele pega2 min de leitura

    O padrão, o texto e o que ele pega

    Escreva a expressão regular no painel ao lado e cole o texto de teste. Cada ocorrência aparece marcada no próprio texto, e embaixo vem a lista com a posição de cada uma e o valor de cada grupo de captura, inclusive os nomeados. O exemplo que abre a página acha os e-mails de uma frase e ignora o que só parece e-mail.

    Com “Substituir por” preenchido, a saída vira o texto com as ocorrências trocadas: $1 para o primeiro grupo, $<nome> para um grupo nomeado. É o jeito rápido de conferir um replace antes de rodar num arquivo inteiro — mascarar os últimos dígitos de telefones, reordenar datas de dd/mm para aaaa-mm-dd.

    Por que um padrão pode travar

    O motor de regex do JavaScript faz backtracking: quando uma tentativa falha, ele volta e tenta outro caminho. Com quantificadores aninhados, como (a+)+, o número de caminhos cresce exponencialmente com o tamanho do texto, e uma linha comum pode levar minutos. Aqui o teste roda num worker separado e é interrompido depois de um segundo, com o aviso. Se isso acontecer, reescreva o padrão: o mesmo problema derruba um servidor.

    Nada é enviado

    Padrão e texto ficam nesta aba, o que importa quando o texto é um log ou uma base com dados pessoais. Para comparar o antes e o depois de uma substituição, use o comparador de textos.

    Perguntas frequentes

    Que sintaxe de regex é essa?

    A do JavaScript, a mesma do navegador e do Node.js, com a flag u ligada para Unicode e grupos nomeados funcionarem. Lookbehind, grupos nomeados e classes \p{…} funcionam; recursos só do PCRE, como quantificadores possessivos e recursão, não.

    Por que o meu padrão parou por tempo?

    Ele levou mais de um segundo, o que quase sempre é backtracking catastrófico: quantificadores aninhados como (a+)+ ou (.*)*, que tentam um número exponencial de caminhos. O teste roda num worker separado, então a página não trava. O mesmo padrão pode travar um servidor, e vale reescrever.

    Como uso grupos de captura na substituição?

    Preencha “Substituir por”: $1 é o primeiro grupo, $2 o segundo, $<nome> um grupo nomeado e $& a ocorrência inteira. A saída vira o texto com cada ocorrência trocada.

    Por que a flag g fica sempre ligada?

    Porque um testador serve para ver todas as ocorrências. As flags i, m e s são interruptores: ignorar maiúsculas, fazer ^ e $ valerem por linha e deixar o ponto pegar quebra de linha.

    Meu texto é enviado para algum lugar?

    Não. O padrão roda no seu navegador, num worker desta página, e nada é enviado — útil quando o texto é um log com dados pessoais.

    Na mesma gaveta