Regex tìm từ trùng lặp

Dùng /\b(\w+)\s+\1\b/gi với chức năng tìm và thay thế. Mọi ví dụ bên dưới đều đã được kiểm thử với mẫu này, và bạn có thể mở trong Regex Tester với dữ liệu mẫu có sẵn.

Cập nhật

/\b(\w+)\s+\1\b/gi
Mở trong Regex Tester

Trước

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

Sau (thay bằng "$1")

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

Cách mẫu hoạt động

Thành phầnÝ nghĩa
\b(\w+)Một từ nguyên vẹn, được bắt làm nhóm 1
\s+Khoảng trắng
\1\bTham chiếu ngược: chính từ đó lặp lại
i flag“The the” được tính là trùng lặp
→ $1Được thay bằng một bản duy nhất

Ví dụ code

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);

Lưu ý và giới hạn

Rất hữu ích khi soát lỗi chính tả. Một số lặp từ là có chủ đích (“had had”, “that that”), nên hãy xem lại các kết quả khớp trước khi thay thế tất cả.

Câu hỏi thường gặp

Regex tìm từ trùng lặp là gì?
/\b(\w+)\s+\1\b/gi — dùng với chức năng tìm và thay thế. Xem bảng ở trên để biết mỗi phần làm gì.
Có chạy được trong Python và PHP không?
Có — các ví dụ code ở trên dùng cùng mẫu này với re trong Python và các hàm preg trong PHP.
Làm sao để kiểm thử regex này?
Nhấn “Mở trong Regex Tester” — mẫu, cờ và văn bản mẫu sẽ tự động được tải, và các kết quả khớp được tô sáng khi bạn chỉnh sửa.