python 我是用的是分组非贪婪匹配 正则匹配,为什么匹配结果少了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?


回答:

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


回答:

楼上已经指出问题点了
根据你的表达式,略微修改后为

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

修改后取第1个分组和第二个分组合并

以上是 python 我是用的是分组非贪婪匹配 正则匹配,为什么匹配结果少了7? 的全部内容, 来源链接: utcz.com/p/939078.html

回到顶部