有一些任意的字符串,如
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
答案 0 :(得分:3)
要查找两个或多个重复两次或更多次的字符,每个字符用空格分隔,请使用:
(.{2,}?)(?:\s+\1)+
以下是测试字符串的工作示例:http://bit.ly/17cKX62
编辑:通过添加?使捕获组不愿意量化?匹配最短的匹配(即现在匹配“字符串”而不是“字符串”)编辑2:为更清晰的结果添加了必需的空格分隔符