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

3 投票
1 回答
1556 浏览
提问于 2025-04-17 09:03

我想找到任何有重复循环的字符串。比如在这些数据中:

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) #-> []

我哪里做错了?任何提示都很感谢。

1 个回答

5

加一个 r 前缀:

r"([0-9]+?)\1+"

这样做会让反斜杠变成字面上的反斜杠,而不是用来转义数字 1。

撰写回答