Regex para encontrar palavras duplicadas

Use /\b(\w+)\s+\1\b/gi com localizar e substituir. Todos os exemplos abaixo foram testados com o padrão, e você pode abri-los no Testador de Regex com as amostras já carregadas.

Atualizado em

/\b(\w+)\s+\1\b/gi
Abrir no Testador de Regex

Antes

This is is a test of the the duplicate finder. The the end.

Depois (substitua por "$1")

This is a test of the duplicate finder. The end.

Como o padrão funciona

ParteSignificado
\b(\w+)Uma palavra inteira, capturada como grupo 1
\s+Espaço em branco
\1\bReferência retroativa: a mesma palavra de novo
i flag“The the” conta como duplicata
→ $1Substituída por uma única cópia

Exemplos de código

JavaScript

const out = text.replace(/\b(\w+)\s+\1\b/gi, "$1");

Python

import re

out = re.sub(r'\b(\w+)\s+\1\b', r'\1', text, flags=re.I)

PHP

$out = preg_replace('/\b(\w+)\s+\1\b/i', '$1', $text);

Observações e limitações

Ótimo para revisão de texto. Algumas repetições são intencionais (“had had”, “that that”), então revise as correspondências antes de substituir todas.

Perguntas frequentes

Qual é o regex para encontrar palavras duplicadas?
/\b(\w+)\s+\1\b/gi — usado com localizar e substituir. Veja a tabela acima para entender o que cada parte faz.
Funciona em Python e PHP?
Sim — os exemplos de código acima usam o mesmo padrão com re em Python e funções preg em PHP.
Como testo esse regex?
Clique em “Abrir no Testador de Regex” — o padrão, as flags e o texto de exemplo carregam automaticamente, e as correspondências são destacadas enquanto você edita.