121426
< - 这里,1是交替的重复数字。
523563
< - 这里,没有数字是交替的重复数字。
552523
< - 这里,2和5都是交替重复的数字。
333567
< - 这里,3是交替的重复数字。
我发现re.findall(r'(?=(\d)\d\1)',P)
是编辑中的解决方案,但却无法理解。
修改 - 不允许使用if
条件。
答案 0 :(得分:9)
你可以在列表理解中使用zip()
而不使用正则表达式来执行此操作:
>>> s = '552523'
>>> [a for a, b in zip(s, s[2:]) if a == b]
['5', '2']
答案 1 :(得分:5)
您可以使用前瞻符号来使用此正则表达式:
(\d)(?=\d\1)
<强>解释强>
(\d)
:匹配并捕获第1组(?=
:开始前瞻
\d
:匹配任何数字\1
:对已捕获的组#1的反向引用)
:结束先行