Python正则表达式在字符'^'后面的奇怪行为

问题描述

在Python的正则表达式中:如果regex1不这样做,为什么regex2抱怨固定宽度的隐藏? ^(开始标记)是否超过1个字符?

Regex1

(?<=^|b)[0-9]

Regex2

(?<=a|b)[0-9]

可在https://regex101.com/r/L5J47R/2中复制

解决方法

为什么第一个正则表达式在Python中也不起作用,因为^是零宽度匹配,并且Python正则表达式引擎不支持在后置断言中使用零和非零交替。

但是其他引擎(例如Java,PHP,Perl,C#等)支持此功能。

要解决此问题,可以使用以下正则表达式:

(?:^|(?<=b))[0-9]

RegEx Demo