你能解释为什么这个正则表达式不起作用吗?

Geo*_*Geo 3 python regex negative-lookbehind

>>> d = "Batman,Superman"
>>> m = re.search("(?<!Bat)\w+",d)
>>> m.group(0)
'Batman'
Run Code Online (Sandbox Code Playgroud)

为什么组(0)不匹配超人?这个外观教程说:

(?<!a)b匹配一个前面没有"a"的"b",使用负后看

Don*_*ows 6

Batman直接前面通过Bat,从而使第一匹配.事实上,两者都不是Superman; 你的字符串中间有一个逗号,它可以很好地允许RE匹配,但是无论如何都不匹配,因为它可以在字符串中先前匹配.

也许这会更好地解释:如果字符串是Batman并且你开始尝试匹配m,则RE将不会匹配,直到后面的字符(给出匹配an),因为这是字符串中唯一的前面位置Bat.