2016-12-29 299 views
1

我环顾四周,只能设法得到这个:\b(\w+)\b([\w\W]*)\b\1\b,替换为:$1$2如何在记事本++/EditPad中删除重复的字符串?

然而,仅通过拆除的话,炒菜锅一样,如果您有:

word1, word2, word1, word2, word3 
*you get:* 
word1, word2, word3 

我想,如果你拥有的是:

"i love you","i love you too", "i love you", "i love you so much" 

我应该得到:

"i love you","i love you too", "i love you so much" 
+1

也许这样? '((“[^,”] +“(\ s *,\ s *)?)。*)\ 2'然后这个替换就是'$ 1'。 – Ouroborus

+0

Ouroborus ...你救了我的一天! !! – wakamdr

回答

2

您有一个匹配整个单词的正则表达式,然后是任何0+字符,直到组1中捕获的整个单词的最后一次出现为止。

现在需要其中一个单词边界应"更换一个正则表达式,而\w模式必须与[^"](不")来代替。此外,还可以匹配可选的逗号和空格。

查找内容("(?!\s*,\s*")[^"]+")(.*)\1,?\s*
替换$1$2
.匹配换行符选项必须是ON如果你的受骗者可以跨多行显示。

(?!\s*,\s*")负向超前将会像所有匹配的", "一样失败,以免除去字段分隔符。

您将需要点击几次替换所有才能删除所有模糊。

查看示例屏幕,其中"he loves you","i love you",被删除。

enter image description here

+0

谢谢,我注意到当我点击'全部替换'时,它会删除所有字符串,直到文本中的第一个字符串,这意味着第一个字符串是唯一的字符串,例如,如果我有:'i爱你','我爱你','我爱你','我也爱你',...唯一会留下的字符串将是'我爱你' – wakamdr

+0

澄清一个问题:你有*你可能实际上需要单词边界,如'(“\ b [^”] + \ b“)(。*)\ 1,?\ s *' –

+0

或者,那里的单词*是另外两种方法:1)如果''''中没有逗号,将逗号加到否定的字符类 - '(“[^,”] +“)(。*)\ 1,?\ s *' 。2)确保你不匹配'''如果后面跟着',''''(“(!!\ s *,\ s *”)[^“] +”)(。*)\ 1 ,?\ s *' –

相关问题