如何找到交替的重复数字对?

时间:2018-03-16 16:29:18

标签: python regex python-3.x

121426< - 这里,1是交替的重复数字。

523563< - 这里,没有数字是交替的重复数字。

552523< - 这里,2和5都是交替重复的数字。

333567< - 这里,3是交替的重复数字。

我发现re.findall(r'(?=(\d)\d\1)',P)是编辑中的解决方案,但却无法理解。

修改 - 不允许使用if条件。

2 个答案:

答案 0 :(得分:9)

你可以在列表理解中使用zip()而不使用正则表达式来执行此操作:

>>> s = '552523'
>>> [a for a, b in zip(s, s[2:]) if a == b]
['5', '2']

答案 1 :(得分:5)

您可以使用前瞻符号来使用此正则表达式:

(\d)(?=\d\1)

RegEx Demo

<强>解释

  • (\d):匹配并捕获第1组
  • 中的数字
  • (?=:开始前瞻
    • \d:匹配任何数字
    • \1:对已捕获的组#1的反向引用
  • ):结束先行