今天我偶然发现了正则表达式中的奇怪行为 - 匹配。我无法解释它,虽然我认为我对正则表达式很有经验
print re.sub('a*|b', '', 'bcd')
BCD
其中没有glob
print re.sub('a|b', '', 'bcd')
CD
预期。
我认为失败的替代方案不会阻止尝试其他人!
答案 0 :(得分:7)
a*
始终匹配(零到无限数量的a
个字符。)
因此,您最终会在匹配位置进行替换 - ''
与bcd
。
所以整个字符串都会返回。
re.sub(pattern,repl,string,count = 0,flags = 0)
返回通过替换repl替换字符串中最左边非重叠模式而获得的字符串。
因此,''
字符串的开头出现为零a
,并被repl
取代。