Regex 正则表达式删除重复的单词?

Regex 正则表达式删除重复的单词?,regex,Regex,我用它来删除重复的单词(记事本++或Powergrep) (\b\w+\b)\w+\1.替换为${1}。 如何更改此设置以在一行中查找不连续的重复单词,并删除第二个重复单词 Example word1, word2, word1, word3, Result word1, word2, word3, 尝试了这个,但是它选择了重复的单词和字符串 (\b\w+\b)(.*?)\W+\1. 向前看比向后看更容易使用向前看 \b(\w+)\b\s*,\s*(?=.*\1) 您可以使用它并替换为空字

我用它来删除重复的单词(记事本++或Powergrep)
(\b\w+\b)\w+\1.
替换为
${1}
。 如何更改此设置以在一行中查找不连续的重复单词,并删除第二个重复单词

Example
word1, word2, word1, word3,
Result
word1, word2, word3,
尝试了这个,但是它选择了重复的单词和字符串

(\b\w+\b)(.*?)\W+\1.

向前看比向后看更容易使用向前看

\b(\w+)\b\s*,\s*(?=.*\1)
您可以使用它并替换为
空字符串
。请参阅演示


使用正则表达式很难做到这一点。您可以对整个文件重复执行
((\b\w+\b.*)\b\2\b
,直到它不再找到重复项,但它不会处理任何周围的格式。另一种方法是在空格上拆分,然后递归数组删除DUP,然后重写文件。谢谢,它可以工作。另一个问题是,有没有办法限制单词的长度?我有一个问题,这个正则表达式将选择单词的一部分,例如单词.1,将选择“.1”作为单词。已尝试\b(\w+{4,10}\b\s*,\s*(?=.*\1)按长度限制单词,但随后它选择了整个文本。@Jim8645
\b(\w{4,10})\b\s*,\s*(?=.*\1)
使用此选项限制长度,谢谢,我找到了如何只查找数字单词或字母单词,
\b(\w[0-9]{4,10}\b\s*,\s*,\s*,\s*,\s*(?=.\s*,
\s*,
,但是如何限制只查找链接?对于ex
http://www.google.com/abc