使用Python

时间:2015-10-24 17:27:36

标签: string python-2.7 pattern-matching

我有这张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

我需要帮助!感谢

1 个答案:

答案 0 :(得分:1)

如果是“abc”,则regex找不到匹配的字符串,因此返回Nonelen(None)会引发异常。

将正则表达式更改为(.+?)(\1+|$)应该会有所帮助。