为什么re.findall()比re.sub()找到更多的匹配项?

为什么re.findall()比re.sub()找到更多的匹配项?,第1张

为什么re.findall()比re.sub()找到更多的匹配项?

您使用*允许空匹配:

'first'   -> matched':'       -> not in the character class but, as the pattern can be empty due   to the *, an empty string is matched -->'''second'  -> matched'$'       -> can contain an empty string before,  an empty string is matched -->''

引用以下文档

re.findall()

空匹配项将包括在结果中,除非它们碰到另一个匹配项的开头。

您在子结果中看不到空匹配的原因在以下文档中进行

re.sub()
了说明:

模式的空匹配仅在不与上一个匹配相邻时才被替换。

尝试这个:

re.sub('(?:Choucroute garnie)*', '#', 'ornithorynque')

现在这个:

print re.sub('(?:nithorynque)*', '#', 'ornithorynque')

没有连续的#



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5662226.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存