WikiPlus

Regex para busca e substituição de texto — exemplos práticos

A capacidade de buscar e substituir texto usando expressões regulares é uma das funcionalidades mais poderosas disponíveis em editores de código, linguagens de programação e ferramentas de processamento de texto. Com regex, você pode fazer substituições sofisticadas que levam em conta o contexto, como reformatar datas de um padrão para outro, converter tags HTML em Markdown, ou padronizar formatos inconsistentes em uma base de dados. O Testador de Regex da WikiPlus permite validar seus padrões antes de aplicá-los, evitando substituições indesejadas em arquivos importantes.

Substituição com referências a grupos de captura

O poder real das substituições com regex aparece quando você usa grupos de captura. Por exemplo, para converter uma data do formato DD/MM/AAAA para AAAA-MM-DD, a regex (\d{2})/(\d{2})/(\d{4}) captura dia, mês e ano em três grupos. Na string de substituição, você referencia esses grupos como $3-$2-$1 em JavaScript (ou \3-\2-\1 em Python), reordenando os componentes. O resultado: '25/12/2026' se torna '2026-12-25'. Esse tipo de transformação seria impossível com busca/substituição literal. No editor Visual Studio Code, o mesmo conceito funciona na barra de busca e substituição, onde você pode usar \1, \2, etc. para referenciar grupos. Desenvolva e teste o padrão no Testador de Regex da WikiPlus antes de aplicar em massa.

Limpeza e normalização de dados com regex

Regex é extremamente útil para limpar e normalizar dados inconsistentes. Para remover HTML tags de texto: <[^>]+> substitui por string vazia. Para normalizar múltiplos espaços: \s+ substitui por um único espaço. Para remover caracteres especiais mantendo apenas letras, números e espaços: [^a-zA-ZÀ-ÿ0-9\s] substitui por vazio (note o range À-ÿ para caracteres acentuados). Para converter quebras de linha Windows (\r\n) para Unix (\n): \r\n substitui por \n. Para remover linhas vazias: ^\s*$ com flag multiline. Cada uma dessas operações pode ser desenvolvida e testada no Testador de Regex antes de ser aplicada a um arquivo real.

Regex em editores de código: VSCode, Sublime, Notepad++

Todos os editores de código populares suportam busca e substituição com regex. No VS Code, ative regex na barra de busca clicando no ícone '.*' ou pressionando Alt+R. No Sublime Text, marque a opção de regex na barra de busca. No Notepad++, habilite 'Regular expression' no menu Find/Replace. O detalhe importante é que cada editor usa sua própria variação de sintaxe para substituições: VS Code e Sublime usam $1, $2 para grupos; Notepad++ usa \1, \2. A ferramenta online da WikiPlus usa a engine JavaScript, que usa $1, $2 na substituição quando disponível. Verificar a documentação do seu editor específico para a sintaxe de substituição garante que a regex desenvolvida no testador funcione corretamente na aplicação final.

Processamento de logs com regex: extração de informações

Logs de servidor são um caso de uso clássico para regex. Um log Apache típico tem o formato: endereço IP, data, método HTTP, URL, código de status e tamanho. Para extrair apenas os acessos com erro 500, use a regex: .+\s500\s. Para capturar URL e código de status juntos: '(GET|POST|PUT|DELETE)\s(/[^\s]+)\s+HTTP/\d\.\d.+(\d{3})'. Com regex, você pode transformar gigabytes de logs em dados estruturados para análise. Ferramentas como grep, sed e awk no Linux usam regex. O Testador de Regex da WikiPlus é ideal para desenvolver e refinar esses padrões com amostras representativas dos seus logs antes de processá-los em escala.

Perguntas frequentes

Como usar regex para substituir texto no JavaScript?
Use o método replace() ou replaceAll(): 'texto'.replace(/padrão/g, 'substituto'). Com grupos de captura: 'João Silva'.replace(/(\w+)\s(\w+)/, '$2, $1') retorna 'Silva, João'. A flag 'g' é necessária para substituir todas as ocorrências, não apenas a primeira.
É possível usar regex para substituição em Python?
Sim. Use re.sub(padrão, substituto, texto). Para substituição com grupos: re.sub(r'(\d{2})/(\d{2})/(\d{4})', r'\3-\2-\1', '25/12/2026') retorna '2026-12-25'. Use r'' (raw string) para evitar conflitos com a barra invertida do Python.
Como substituir texto apenas em determinado contexto sem lookahead?
Sem lookahead, você pode usar grupos de captura e incluir o contexto na regex mas restaurá-lo na substituição. Por exemplo, para substituir 'R$100' por 'R$200' mas não '100' isolado: (R\$)100 substituído por $1200 preserva o 'R$' e muda apenas o número.