大佬们帮我看一下为什么正则表达式无法匹配完全
本帖最后由 马钰乔布轩 于 2020-7-21 13:03 编辑import urllib.request
import re
url = "http://www.jimohezi.com/photo/show?id=889933"
req = urllib.request.Request(url)
req.add_header = ('User-Agent','Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36')
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
print(html)
p = re.findall(r'\w\w3/720/\w{2}/(\w+)\.jpg',html)
print(p) #匹配结果不完全,无法匹配前面的前缀/pp3/720/5f/和后面的.jpg
匹配的到呀,我这都匹配出来了? Twilight6 发表于 2020-7-21 13:10
匹配的到呀,我这都匹配出来了?
大神!为啥我匹配完就是一部分呀,代码就是上面的那个,一模一样 本帖最后由 sunrise085 于 2020-7-21 13:17 编辑
马钰乔布轩 发表于 2020-7-21 13:12
大神!为啥我匹配完就是一部分呀,代码就是上面的那个,一模一样
因为你在中间加了一个括号进行了分组,所以只能匹配到分组内的信息。
re.findall(r'\w\w3/720/\w{2}/(\w+)\.jpg',html)
正则中有个小括号(\w+),所以匹配出来的只是小括号分组的内容。
你需要把小括号去掉
re.findall(r'\w\w3/720/\w{2}/\w+\.jpg',html)
小甲鱼的正则讲解中有相关的解释 马钰乔布轩 发表于 2020-7-21 13:12
大神!为啥我匹配完就是一部分呀,代码就是上面的那个,一模一样
噢 你是这个意思呀,那楼上正解 sunrise085 发表于 2020-7-21 13:15
因为你在中间加了一个括号进行了分组,所以只能匹配到分组内的信息。
re.findall(r'\w\w3/720/\w{2}/( ...
解决了,谢谢!!! Twilight6 发表于 2020-7-21 13:17
噢 你是这个意思呀,那楼上正解
谢谢大佬,解决了!!!
页:
[1]