|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import re
- str ='<div class="thumb">\
- \
- <a href="/article/121721100" target="blank">\
- <img src="//pic.qiushibaike.com/system/pictures/12392/123925646/medium/ZXOKCHDF7DKY0J4D.jpg" alt="糗事#123925646">\
- </a>\
- \
- </div>'
- ex = r'<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
- a = re.findall(ex,str,re.S)
- print(a)
复制代码
第一个问题:.*? *的意思是匹配零次或者无数次,那么关闭贪婪模式后,岂不是永远只匹配0个字符?
第二个问题:上面这一段代码,难道不应该整个str都被匹配了吗?为什么只有//pic.qiushibaike.com/system/pictures/12392/123925646/medium/ZXOKCHDF7DKY0J4D.jpg被匹配了
这个写法挺麻烦的其实
之所以没有匹配整个 str 是因为中间有一个括号
(.*?)
表示的是取括号里面的内容
也就是 src="后面的内容,一直到src右侧的"
简单一点的办法就是
- import re
- str = '<div class="thumb">\
- \
- <a href="/article/121721100" target="blank">\
- <img src="//pic.qiushibaike.com/system/pictures/12392/123925646/medium/ZXOKCHDF7DKY0J4D.jpg" alt="糗事#123925646">\
- </a>\
- \
- </div>'
- ex = r'src="([^"]+[\.jpg|\.png])"'
- a = re.findall(ex, str, re.S)
- print(a)
复制代码
|
|