登录
首页 >  文章 >  python教程

Python正则匹配结果不符:分组非贪婪匹配为何少匹配字符?

时间:2024-12-19 08:39:49 134浏览 收藏

golang学习网今天将给大家带来《Python正则匹配结果不符:分组非贪婪匹配为何少匹配字符?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习文章或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

Python正则匹配结果不符:分组非贪婪匹配为何少匹配字符?

python 正则匹配存在差异的原因

使用分组非贪婪匹配进行正则表达式的匹配时,发现匹配结果与预期不符,少了 7 个字符。通过仔细观察发现,问题出现在匹配模式中。

正则表达式中的 .(点)表示匹配任意单个字符。在这种情况下,作者希望匹配像 forum/w33d580/ 这样的路径部分。然而,代码中使用了 r'http://tiebapic.baidu.com/(.+?)sign=.+?/(.+?).(.+?)' 模式,这里 .+? 匹配到的是任意数量的任意字符,包括 t 字符。

因此,匹配结果中缺少了最后的 .jpg,因为它被 t 字符替换掉了。为了解决此问题,需要转义点,即使用 . 替换 .。

修改后的正则表达式:

pattern = re.compile(r'http://tiebapic.baidu.com/(.+?)sign=.+?\/(.+)\.(.+?)\?tbpicau=', re.s)

现在,匹配结果将是预期的:

forum/w33D580/9728d9177f3e67097e8a81c87dc79f3df9dc55aa.jpg

好了,本文到此结束,带大家了解了《Python正则匹配结果不符:分组非贪婪匹配为何少匹配字符?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>