python 正则匹配存在差异的原因
使用分组非贪婪匹配进行正则表达式的匹配时,发现匹配结果与预期不符,少了 7 个字符。通过仔细观察发现,问题出现在匹配模式中。
正则表达式中的 .(点)表示匹配任意单个字符。在这种情况下,作者希望匹配像 forum/w33d580/ 这样的路径部分。然而,代码中使用了 r'http://tiebapic.baidu.com/(.+?)sign=.+?/(.+?).(.+?)' 模式,这里 .+? 匹配到的是任意数量的任意字符,包括 t 字符。
因此,匹配结果中缺少了最后的 .jpg,因为它被 t 字符替换掉了。为了解决此问题,需要转义点,即使用 . 替换 .。
立即学习“Python免费学习笔记(深入)”;
修改后的正则表达式:
pattern = re.compile(r'http://tiebapic.baidu.com/(.+?)sign=.+?/(.+).(.+?)?tbpicau=', re.s)
现在,匹配结果将是预期的:
forum/w33D580/9728d9177f3e67097e8a81c87dc79f3df9dc55aa.jpg
以上就是Python正则匹配结果不符:分组非贪婪匹配为何少匹配字符?的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系 yyfuon@163.com