Localizar e Substituir
Ferramenta avançada de localizar e substituir com suporte a regex, busca diferenciando maiúsculas, correspondência de palavra inteira, opção de preservar maiúsculas e substituição em lote. Localize e substitua texto eficientemente.
Sobre a Ferramenta Localizar e Substituir
A ferramenta Localizar e Substituir é um utilitário poderoso de busca e substituição de texto com recursos avançados incluindo suporte a expressões regulares, busca diferenciando e não diferenciando maiúsculas, correspondência de palavra inteira, opção de preservar maiúsculas para substituição inteligente e modos de substituição em lote (substituir tudo) e passo a passo (substituir próximo). A ferramenta destaca correspondências na saída para fácil verificação e fornece estatísticas em tempo real incluindo contagem de correspondências, substituições feitas e posição atual. Perfeita para edição de texto, limpeza de dados, refatoração de código, migração de conteúdo e tarefas de processamento de texto em lote.
Como uso regex em localizar-e-substituir e quais são os padrões mais úteis?
Ative a opção "Usar expressões regulares" e sua busca se torna um padrão, não uma string literal. Padrões essenciais: \d+ casa qualquer sequência de dígitos, \s+ casa espaço em branco, \w+ casa caracteres de palavra, .+ casa qualquer coisa (greedy), [A-Za-zÁÉÍÓÚáéíóúÃãÕõÇç]+ apenas letras incluindo acentos, ^foo casa "foo" no início da linha, foo$ no final. Grupos de captura com parênteses permitem reutilizar o match: (\w+)@(\w+) captura usuário e domínio, e $1 / $2 no campo de substituição os referencia. Retroreferências permitem trocar: (\w+) (\w+) substituído por $2 $1 troca palavras adjacentes. Sempre teste em uma amostra pequena primeiro — bugs de regex são silenciosos e podem corromper documentos inteiros. Use o recurso de destaque para verificar matches antes de clicar em Substituir Tudo.
Qual a diferença entre quantificadores regex gulosos, preguiçosos e possessivos?
Quantificadores gulosos (*, +, ?, {n,m}) casam o máximo possível, depois retrocedem até que o resto do padrão encaixe. Então <.+> em "<a><b>" casa todo "<a><b>" porque .+ gulosamente consome tudo entre o primeiro < e o último >. Quantificadores preguiçosos (*?, +?, ??, {n,m}?) casam o mínimo possível: <.+?> na mesma entrada casa apenas "<a>." Preguiçoso é o que você geralmente quer ao extrair tags ou conteúdo entre delimitadores. Quantificadores possessivos (*+, ++) casam gulosamente e se recusam a retroceder — falham em vez de tentar de novo, o que previne retrocesso catastrófico em entrada maliciosa. O regex JavaScript não suporta quantificadores possessivos nativamente; use grupos atômicos (?>...) onde disponíveis.
Como "preservar caso" decide qual capitalização usar para a substituição?
Preservar caso é uma heurística que inspeciona o match original e aplica o mesmo padrão de caso à substituição. As regras nesta ferramenta são: se o texto correspondido está todo em minúsculas ("olá"), mantenha a substituição como você digitou ("oi"). Se tudo em maiúsculas ("OLÁ"), passe a substituição para maiúsculas ("OI"). Se apenas a primeira letra está capitalizada ("Olá"), capitalize a substituição ("Oi"). Caso misto ("oLÁ") geralmente cai para a forma digitada. Útil para renomear variáveis em documentação, trocar nomes de produtos que aparecem em títulos e corpo, ou substituir termos preservando capitalização de início de frase. Aplica apenas a buscas de texto plano, não regex — para regex, use grupos de captura conscientes de caso.
O que "casar palavra inteira" realmente faz e quando devo usar?
Casar palavra inteira envolve seu padrão de busca com âncoras de limite de palavra (\b em ambos os lados). Um limite de palavra é a posição de largura zero entre um caractere de palavra (letra, dígito, sublinhado) e um não-caractere de palavra (espaço, pontuação, fim de string). Então buscar "gato" com palavra-inteira ativada casa "gato" em "O gato correu" mas pula "gatos," "esgatonhar," e "gatuno." Use ao substituir nomes de variáveis em código ("i" não deveria casar "if"), nomes de produtos em copy ("Pro" não deveria casar "Processador"), ou palavras curtas comuns. Aviso: em idiomas onde limites de palavra não são baseados em espaço (sílabas compostas vietnamitas, chinês, japonês), \b pode não se comportar como esperado. Para esses scripts, construa lookaround positivos/negativos explícitos.

Como faço uma busca-e-substituição em lote através de muitas linhas ou seções de um documento?
Use Substituir Tudo para o caso simples — uma busca, uma substituição, aplicada em todo lugar. Para transformações sequenciais (busca A substitui por B, depois busca C substitui por D, depois busca E substitui por F), faça uma de cada vez e verifique cada passo. Cuidado com bugs de ordem de operações: se substituir "gato" por "cachorro" e depois "cachorro" por "rato," os gatos originais viram ratos, o que provavelmente não pretendia. Para reescritas complexas de múltiplos passos, cole o resultado de cada passo em um campo novo em vez de encadear no lugar. Para trabalhos verdadeiramente em lote através de muitos arquivos, esta ferramenta no navegador serve para um documento por vez; para centenas de arquivos, use sed (Unix), PowerShell ou busca-substituição multi-arquivo do VS Code.
Como posso usar regex com grupos de captura para reformatar dados como datas, números de telefone ou nomes?
Grupos de captura parentizam partes do match para reuso na substituição. Para converter datas EUA MM/DD/YYYY para ISO YYYY-MM-DD: busca (\d{2})/(\d{2})/(\d{4}) e substitui por $3-$1-$2. Para converter formato brasileiro DD/MM/YYYY para ISO: busca (\d{2})/(\d{2})/(\d{4}) substitui por $3-$2-$1. Para trocar "Sobrenome, Nome" para "Nome Sobrenome": busca (\w+), (\w+) substitui por $2 $1. Para padronizar formatos de telefone de qualquer agrupamento para (XX) XXXXX-XXXX: busca (\d{2})\D*(\d{4,5})\D*(\d{4}) substitui por ($1) $2-$3. Grupos nomeados (?<nome>padrão) são mais claros para padrões complexos. Sempre teste em algumas amostras antes de rodar no documento inteiro.
Quais são as armadilhas comuns de regex que destroem texto e como evito?
Cinco clássicas: (1) Esquecer de escapar metacaracteres regex — buscar "." casa qualquer caractere; você precisa \. para um ponto literal. (2) Match guloso através de quebras de linha — .* em "<a>foo</a><b>bar</b>" sem modificador preguiçoso casa a string toda. (3) Retrocesso catastrófico — padrões como (a+)+ em "aaaab" podem levar tempo exponencial; use grupos atômicos ou quantificadores possessivos. (4) Confusão de âncoras — ^ casa início de string por padrão, início de linha só com modo multilinha. (5) Substituir dentro de substituições — se trocar "velho" → "novo velho" a ferramenta só substitui uma vez por posição de match, mas substituições recursivas ilimitadas em alguns motores podem travar. Sempre: teste em texto de amostra, use o recurso de destaque para visualizar, mantenha backup do texto original.
Como busca-e-substituição funciona para refatoração de código vs. texto em linguagem natural?
Refatoração de código precisa de consciência sintática que regex puro não pode prover. "Substitua 'foo' por 'bar'" em código pode acertar erroneamente strings, comentários e identificadores que contenham "foo." Para código, prefira ferramentas conscientes de linguagem: renomeação de símbolo do VS Code (F2), refactor do IntelliJ, jscodeshift para JavaScript, libcst para Python. Eles parseiam a AST e renomeiam apenas identificadores reais, deixando strings e comentários intactos. A busca-substituição de linguagem natural é mais permissiva mas tem suas próprias armadilhas: substituição insensível a caso pode danificar nomes próprios ("Brasil" virando "brasil"), pluralização pode deixar sufixos órfãos, e limites de palavra podem falhar através de hífens. Use esta ferramenta para prosa, rascunhos e transformações pontuais; recorra a ferramentas baseadas em AST para mudanças de código em produção.
Exemplos de Operações Localizar e Substituir
| Localizar | Substituir | Opções | Resultado |
|---|---|---|---|
| gato | cachorro | Diferenciar maiúsculas: NÃO | Muda 'gato', 'Gato', 'GATO' para 'cachorro' |
| \d+ | NUM | Usar regex: SIM | Substitui todos os números por 'NUM' |
| o | a | Palavra inteira: SIM | Substitui 'o' mas não 'outro' ou 'como' |
| olá | oi | Preservar maiúsculas: SIM | Olá→Oi, OLÁ→OI, olá→oi |
| ^\s+ | Regex + Multilinha: SIM | Remove espaços em branco iniciais de cada linha |
