我真的不理解docs.python.org上的以下示例:
>>>> p = re.compile('x*')
>>>> p.sub('-', 'abxd')
'-a-b-d-'
为什么正则表达式'x*'
匹配四次?
我认为输出应该是:' ab - '
答案 0 :(得分:3)
*
元字符匹配0次或更多次。所以,
a bx d
^ ^ -- ^
^
是x*
匹配0次的位置,--
是x*
匹配1次的位置。这就是输出为-a-b-d-
的原因。
要获得输出ab-d
,您需要在正则表达式中使用x+
。这意味着匹配一次或多次。因此,它只会匹配以下位置
abxd
^
答案 1 :(得分:0)
自Python 3.7以来,有关re.sub的一个更新。
与先前的非空匹配项相邻时,将替换该模式的空匹配项。
结果变为“ -a-b--d-”,因为该“ d”现在具有空匹配项。在先前的python版本中,不允许该空匹配,因为它与“ x”的匹配相邻。