【发布时间】:2012-01-27 20:56:27
【问题描述】:
我正在寻找一种有效的方法来提取最短的重复子字符串。 例如:
input1 = 'dabcdbcdbcdd'
ouput1 = 'bcd'
input2 = 'cbabababac'
output2 = 'ba'
我将不胜感激任何与该问题相关的答案或信息。
另外,在this post,人们建议我们可以使用像这样的正则表达式
re=^(.*?)\1+$
在字符串中找到最小的重复模式。但是这样的表达式在 Python 中不起作用并且总是返回一个不匹配的结果(我是 Python 新手,也许我错过了什么?)。
---跟进---
这里的标准是寻找长度大于一且总长度最长的最短非重叠模式。
【问题讨论】:
-
“最短”如何?重复次数最少? “abcabc ababab”怎么样? “阿巴”? “dd”在你的第一个字符串?部分匹配使这个定义有点奇怪......
-
没错。在第一个字符串中,
d应该是正确答案。 -
是的,我已经在那里添加了标准。而且我认为下面的两个答案已经可以引导我找到最终的解决方案。非常感谢。
标签: python regex string-matching