Bạn có thể sử dụng biểu thức chính quy để xóa các từ trùng lặp liên tiếp trong một dòng, tuy nhiên tôi không nghĩ có thể xóa các từ trùng lặp không liên tiếp (ví dụ dangerous, hazardous, dangerous
).
Sử dụng biểu thức chính này trong cửa sổ thay thế trong Notepad ++ và đừng quên chọn "Biểu thức chính quy" làm tùy chọn Chế độ tìm kiếm bên dưới:
Regex này sẽ xóa tất cả các từ trùng lặp liên tiếp - cho dù đó là 2 từ trùng lặp hoặc 10 từ trùng lặp liên tiếp: \b(\w+)(?:,\s+\1\b)+
.
Chính xác regex không dấu phẩy sẽ là: \b(\w+)(?:\s+\1\b)+
(có thể hữu ích cho những người dùng khác).
Nếu bạn muốn một regex cụ thể chỉ cho hai từ trùng lặp (nhân đôi), hãy sử dụng regex này : (\b\w+\b)\W+\1
.
Đặt regex này vào hộp Thay thế bằng để giữ một lần xuất hiện của từ (nếu không tất cả các từ lặp lại sẽ bị xóa) : ${1}
.
Những biểu thức chính quy này sẽ khắc phục một tình huống như tình huống bạn mô tả trong câu hỏi của bạn làm ví dụ. Regex đầu tiên sẽ hoạt động với mọi số từ trùng lặp (ví dụ dangerous, dangerous, dangerous, dangerous, hazardous
), trong khi phiên bản thứ hai sẽ chỉ hoạt động cho hai từ trùng lặp (ví dụ:dangerous, dangerous, hazardous
).
Lưu ý: Các biểu thức chính quy sẽ chỉ áp dụng đối với các định dạng được mô tả trong câu hỏi, có nghĩa là định dạng thích two words, two words, anotherword
, two-words, two-words, anotherword
, three words expression, three words expression, anotherword
sẽ không thay đổi vì regex sẽ không áp dụng đối với họ.
dangerous,hazardous,dangerous,perilous
? Nói cách khác, những từ trùng lặp luôn ở cạnh nhau?