python 我是用的是分组非贪婪匹配 正则匹配,为什么匹配结果少了7?

作者站长头像
站长
· 阅读数 7

python 正则匹配,为什么匹配结果少了7?我是用的是分组非贪婪匹配

python 我是用的是分组非贪婪匹配 正则匹配,为什么匹配结果少了7?代码如下:

url = "http://tiebapic.baidu.com/forum/w%3D580/sign=33b74ba68b11728b302d8c2af8fdc3b3/9728d9177f3e67097e8a81c87dc79f3df9dc55aa.jpg?tbpicau=2024-01-18-05_4f80cd1a7f322fc1e38464b6e05d9188"
    pattern = re.compile(r'http://tiebapic.baidu.com/(.+?)sign=.+?\/(.+?).(.+?)\?tbpicau=', re.S)
    filenames = pattern.findall(url)
    filename = '%s%s%s' % (filenames[0][0], filenames[0][1], filenames[0][2])
    print(filename)

//输出结果:

forum/w33D580/928d9177f3e67097e8a81c87dc79f3df9dc55aa.jpg

//期望输出结果:

forum/w33D580/9728d9177f3e67097e8a81c87dc79f3df9dc55aa.jpg

为什么结果中928d9177f3e67097e8a81c87dc79f3df9dc55aa.jpg 少了7?

回复
1个回答
avatar
test
2024-06-23

正则的.表示任意字符,如果中间匹配字符点使用转义.按你的做法去掉点,期望值怎么还会是.jpg呢不需要去掉点的话,这(.+?).(.+?)又是莫名其妙的做法

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容