我的正则表达式模式在Python中找到重复循环有什么问题?

Raf*_*l T 3 python regex pattern-matching regex-negation

我想匹配任何循环周期的字符串.就像这个数据:

3333333333333333333333333333333333333333 / 1 digit cycle(3)
1666666666666666666666666666666666666666 / 1 digit cycle(6)
1428571428571428571428571428571428571428 / 6 digit cycle(142857)
1111111111111111111111111111111111111111 / 1 digit cycle(1)
0909090909090909090909090909090909090909 / 2 digit cycle(09)
0834522467546323545411673445234655345222 / no cycle
0769230769230769230769230769230769230769 / 6 digit cycle(769230)
0714285714285714285714285714285714285714 / 6 digit cycle(714285)
0666666666666666666666666666666666666666 / 1 digit cycle(6)

我尝试过的模式"([0-9]+?)\1+"在其他语言(如VB或文本编辑器)中运行良好.我已将这些字符串存储在名为的列表中values.所以这是我的代码:

import re

#stuff to get values
pattern = re.compile("([0-9]+?)\1+")
for value in values:
    matchObj = pattern.search(value)
    print(matchObj) #-> None
    matchObj = pattern.findall(value)
    print(matchObj) #-> []
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?任何提示都表示赞赏.

Ned*_*der 5

添加r前缀:

r"([0-9]+?)\1+"
Run Code Online (Sandbox Code Playgroud)

这将使反斜杠成为字面反斜杠而不是逃避1.

  • @Rafael T - 一定要查看:[Python Regular Expression HOWTO](http://docs.python.org/howto/regex.html"即使对非Python人员也是一个优秀的正则表达式参考") (2认同)