正则分组非贪婪匹配时结果减少的原因分析
在正则表达式中,.匹配任意字符,为了避免匹配任何字符导致输出结果错误,需要将.转义为 .。
在给定的正则表达式 http://tiebapic.bdu.com/(.+?)sign=.+?/(.+?).(.+?)?tbpicau= 中,.+?” 的含义是匹配一个或多个字符,并且是非贪婪匹配的。非贪婪匹配意味着它会尽可能少地匹配字符。
在提供的 url 中,928d9177f3e67097e8a81c87dc79f3df9dc55aa.jpg 少了 7 个字符,这是因为转义. 操作符没有被应用于中间匹配字符点。
立即学习“”;
以下是正确的正则表达式:
pattern = re.compile(r'http://tiebapic.baidu.com/(.+?)sign=.+?/(.+?).(.+?)?tbpicau=', re.S)
登录后复制
修改后的正则表达式将确保.匹配任意字符,从而正确匹配 url 中的文件名部分。
以上就是Python正则表达式非贪婪匹配结果减少的原因是什么?的详细内容,更多请关注php中文网其它相关文章!