替换Python空匹配项
我真的不理解在上发现的以下示例:替换Python空匹配项,python,regex,Python,Regex,我真的不理解在上发现的以下示例: >p=re.compile('x*') >p.sub('-','abxd') '-a-b-d-' 为什么正则表达式“x*”匹配了四次 我认为输出应该是:“ab-”*元字符匹配0次或更多次。所以 a bx d ^ ^ -- ^ ^是x*匹配0次的位置,--是x*匹配1次的位置。这就是为什么输出是-a-b-d- 要获得输出ab-d,需要在正则表达式中使用x+。这意味着匹配一次或多次。因此,它将只匹配以下位置 abxd ^ 自Python 3.7以来关于re.sub
>p=re.compile('x*')
>p.sub('-','abxd')
'-a-b-d-'
为什么正则表达式“x*”匹配了四次
我认为输出应该是:“ab-”
*
元字符匹配0次或更多次。所以
a bx d
^ ^ -- ^
^
是x*
匹配0次的位置,--
是x*
匹配1次的位置。这就是为什么输出是-a-b-d-
要获得输出ab-d
,需要在正则表达式中使用x+
。这意味着匹配一次或多次。因此,它将只匹配以下位置
abxd
^
自Python 3.7以来关于re.sub的一次更新
当与前一个非空匹配相邻时,将替换模式的空匹配
结果变成“-a-b--d-”,因为“d”现在有一个空匹配项。在python的早期版本中,不允许使用此空匹配,因为它与“x”的匹配相邻。谢谢@thefourtheye的回答。另一个问题:在“abxd”中,“a”是第一个字符,“d”是最后一个字符,那么在第一个位置之前(在“a”之前)和最后一个位置之后(在“d”之后)怎么可能出现空匹配?@Geekluca认为空字符串在所有字符串之前和之后:-)