2015-04-07 65 views
2

我有一个名称列表。名称可能有一个,两个或更多个部分。例如:匹配在字符串中重复两次的任意序列

  • 雪儿
  • 亨弗莱·鲍嘉
  • 爱伦坡

我的一个输入电源的是喂养我在哪里,名字之间用空格重复两次名字。

  • 雪儿
  • 亨弗莱·鲍嘉亨弗莱·鲍嘉
  • 爱伦坡埃德加爱伦坡

有没有我可以用它来找到具有重复的行正则表达式?并让它给我名字(不重复)。

回答

3

Live demo

短而简单:

([a-zA-Z ]+) (\1) 
+0

我需要将它应用于地址,所以我用'([\ w \ 。] +)(\ 1)'允许数字和句点。在C#中很好用。 – JamesFaix

1

您可以使用此正则表达式查找所有的名字至少有一个重复的词:

(.+)\h+(?=\1) 

RegEx Demo

+0

如果您删除尾部。* $,它适用于给出的示例。否则它只适用于'雪儿'的情况。见https://regex101.com/r/xR0rW6/1 –

+0

它工作正常。你需要'g'(全局)和'm'(多行)标志。 [见本演示](https://regex101.com/r/xR0rW6/2) – anubhava

+0

它仍然需要删除主表达式末尾的。* $。用。* $第二行符合'Humphry',而不是'Humphry Bogart'。当。*被删除时,表达式就是我要找的匹配。 –