寻找重复的子串

时间:2013-08-31 18:04:36

标签: python regex repeat

有一些任意的字符串,如

hello hello hello I am I am I am your string string string string of strings

我能以某种方式找到重复的子字符串用空格分隔(编辑)吗?在这种情况下,它将是“你好”,'我是'和'字符串'。

我一直想知道这件事,但我仍然找不到任何真正的解决方案。 我也阅读了一些关于这个主题的文章,并了解了后缀树,但这可以帮助我,即使我需要找到每一个重复,例如重复次数高于2?

如果是这样,是否有一些python库,可以处理后缀树并对它们执行操作?

编辑:对不起,我不够清楚。所以只是为了说清楚 - 我正在寻找重复的子字符串,这意味着字符串中的序列,例如,正则表达式可以用+或{}通配符代替。所以,如果我必须从列出的字符串中制作正则表达式,我会这样做

(hello ){3}(I am ){3}your (string ){4}of strings 

1 个答案:

答案 0 :(得分:3)

要查找两个或多个重复两次或更多次的字符,每个字符用空格分隔,请使用:

(.{2,}?)(?:\s+\1)+

以下是测试字符串的工作示例:http://bit.ly/17cKX62

编辑:通过添加?使捕获组不愿意量化?匹配最短的匹配(即现在匹配“字符串”而不是“字符串”)

编辑2:为更清晰的结果添加了必需的空格分隔符