Texto

Localizar e substituir texto online

Cole o seu texto, digite o que procurar e veja cada correspondência com o número da linha antes de confirmar a substituição. Expressões regulares são aceitas, inclusive grupos de captura na substituição.

Opções

No modo regex a substituição entende $1, $2 e $&. Escreva $$ para um cifrão literal.

0Correspondências
0Substituições
0Caracteres antes
0Caracteres depois

Onde estão as correspondências

    O modo de texto literal não é o modo simples

    Por baixo existe apenas um motor de expressões regulares. O modo literal funciona escapando cada caractere do seu padrão que o motor trataria como uma instrução — o ponto, a interrogação, os colchetes, o sinal de mais — para que procurar price (USD) procure exatamente isso, e não um grupo contendo a palavra USD. Marque Expressão regular e o escape para: o seu padrão chega ao motor exatamente como foi escrito.

    Por que isso importa: se você colar algo com um ponto em uma ferramenta que esqueceu de escapar, o ponto passa a corresponder a qualquer caractere. Procurar 3.14 também acharia 3x14 e 3,14. É um bug silencioso e produz resultados silenciosamente errados.

    O cifrão no campo de substituição

    Esse pega quase todo mundo. Em JavaScript — e na maioria das implementações de localizar e substituir construídas sobre ele — a string de substituição não é literal. Um cifrão seguido de um dígito insere um grupo de captura, $& insere a correspondência inteira, e outras duas sequências inserem tudo o que vem antes ou depois dela. Então substituir algo por $100 insere em silêncio o grupo de captura 1 seguido de dois zeros, o que normalmente é nada seguido de 00.

    No modo literal esta ferramenta dobra cada cifrão para você, então $100 sai como $100. No modo regex ela não faz isso, porque é justamente esse o sentido do modo regex — escreva $$ quando quiser um cifrão literal ali.

    Somente palavras inteiras, e onde fica o limite

    A opção Somente palavras inteiras envolve o seu padrão em \b, o limite de palavra das expressões regulares. Um limite fica entre um caractere de palavra e um que não é, e a definição de caractere de palavra do JavaScript é estreita: letras de A a Z, dígitos e o sublinhado. Nada mais.

    Vale conhecer a consequência antes de confiar na opção. Procurar café com palavras inteiras ligado vai falhar, porque é não é um caractere de palavra, então não há limite depois dele para corresponder. O mesmo vale para qualquer palavra acentuada ou não latina, e para qualquer coisa com apóstrofo. Nesses casos, desligue a opção e acrescente o seu próprio contexto ao padrão.

    Os hifens cortam para o outro lado. Como o hífen não é um caractere de palavra, procurar up como palavra inteira encontra sim o up dentro de follow-up. Esse é o comportamento padrão, não uma esquisitice desta ferramenta, mas surpreende as pessoas.

    Coisas que as expressões regulares não fazem aqui

    Um padrão pode congelar esta página

    Buscar com expressões regulares normalmente é rápido, mas certos padrões levam tempo exponencial com certas entradas. O formato clássico é a repetição aninhada — algo como (a+)+b rodando contra uma string longa de letras a sem nenhum b. O motor tenta todas as formas possíveis de dividir essas letras antes de concluir que não há correspondência, e o número de formas dobra a cada caractere.

    Isso se chama backtracking catastrófico, e não há como interrompê-lo de dentro da página. Se você escrever um padrão desses, a aba para de responder e a sua única opção é fechá-la. O texto não é enviado para lugar nenhum, então não se perde nada além do texto da caixa — que, como aqui nada é salvo, vale a pena ter copiado se deu trabalho montar.

    O que você tem e o que não tem

    A lista de correspondências mostra as 100 primeiras com número de linha e de coluna, para você conferir um padrão antes de confiar no que ele produz. Não há desfazer: a caixa de entrada é você quem edita e a de resultado é refeita do zero a cada tecla, então o original só some se você sobrescrevê-lo com Usar o resultado como entrada. Não há modo multiarquivo nem modo pasta — para isso, use o sed, o ripgrep ou a busca em todo o projeto do seu editor.

    Perguntas frequentes

    Como eu substituo uma quebra de linha?

    Deixe "Ler \n e \t como escapes" marcado e digite \n no campo Localizar. Um campo de texto de uma linha só não consegue guardar uma quebra de linha de verdade, então a sequência de escape é a única forma de expressá-la. O mesmo funciona no campo de substituição para inserir quebras de linha.

    Por que a minha substituição inseriu caracteres estranhos?

    Quase certamente foi um cifrão. No modo regex $1, $2 e $& são instruções que trazem a correspondência ou um grupo de captura. Escreva $$ para obter um cifrão literal. O modo literal cuida disso para você automaticamente.

    Posso usar grupos de captura?

    Sim, no modo regex. Coloque parte do padrão entre parênteses e refira-se a ela como $1, $2 e assim por diante na substituição. Procurar (\w+), (\w+) e substituir por $2 $1 troca a ordem de duas palavras separadas por vírgula.

    Por que "somente palavras inteiras" não acha a minha palavra acentuada?

    Porque o limite de palavra das expressões regulares só reconhece A-Z, dígitos e o sublinhado como caracteres de palavra. Uma letra acentuada conta como separador, então não existe limite ao lado dela. Desligue a opção para qualquer coisa fora do ASCII simples.

    O meu texto é enviado para algum servidor?

    Não. Tudo roda como JavaScript dentro da aba do seu navegador. Nada é enviado para um servidor e nada é armazenado, o que também significa que não há desfazer nem recuperação se você fechar a página.

    Última atualização 19 de setembro de 2026