6

有一些任意字符串,例如

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 
4

1 回答 1

3

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

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

这是您的测试字符串的一个工作示例:http: //bit.ly/17cKX62

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

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

于 2013-09-01T06:34:21.463 回答