我有这张python代码
import re
def smallestPat(s):
r = re.compile(r"(.+?)\1+")
for match in r.finditer(s):
return match.group(1)
case = input()
for i in xrange(case):
stringAll = raw_input()
pattern = smallestPat(stringAll)
print len(pattern)
此代码适用于重复模式,如
ABAB
abababababababababab
abababababab
输出:
2
2
2
但是,如果我输入以下字符串作为输入:
ABC
我收到错误。 我正在寻找的输出是:
3
我需要帮助!感谢
答案 0 :(得分:1)
如果是“abc”,则regex找不到匹配的字符串,因此返回None
,len(None)
会引发异常。
将正则表达式更改为(.+?)(\1+|$)
应该会有所帮助。