我想使用正则表达式找到字符串中的所有交替数字.一个交替的数字被定义为两个相等的位数之间有一个数字;例如,1212包含2个交替(121和212),1111包含2个交替(111和111).我有以下正则表达式代码:
s = "1212" re.findall(r'(\d)(?:\d)(\1)+',s)
这适用于像“121656”但不是“1212”的字符串.这是一个与我认为的重叠比赛有关的问题.我该怎么处理?
解决方法
(?=((\d)\d\2))
使用lookahead获得所有重叠的匹配.使用re.findall并从元组获取第一个元素.见演示:
https://regex101.com/r/fM9lY3/54