关于正则表达式的问题

关于正则表达式的问题

我用

 p = re.compile(r'data-imgurl=\"(.+?)\"')
result = p.findall(all_img)

去匹配

data-imgurl="https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2238425304,2589246158&fm=26&gp=0.jpg"


结果开头没有data-imgurl=


是我哪里错了么?请同学们指正


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
玖__ 2020-03-08 18:26:33

http://img1.sycdn.imooc.com//climg/5e64c82f08e4e40507180227.jpg老师,为什么这里只会输出符合组内容的第3个

  • 同学你好:这个findall官方文档的解释的匹配的原则就是这样,同学需要做的就是将捕获组变为非捕获组。同学可以自己去了解官方文档的信息,学习愉快^_^。
    2020-03-09 18:16:27
好帮手乔木 2020-02-16 17:57:59

同学你好:

1. 正则表达式中当没有括号时,就是正常匹配,在本例中"/w+/s+/w+"第一次匹配到的字符为"2345  3456",由于是贪婪模式会     继续匹配,第二次从"4567"开始匹配匹配到的结果为字符串"4567 5678"


 import re

string="2345  3456  4567  5678"

regex=re.compile("\w+\s+\w+")

print(regex.findall(string))

#['2345 3456', '4567 5678']

2. 正则表达式中有一个括号时,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果,但是整个正则表达式执   行了只不过只输出括号匹配到的内容, 在第一次匹配时跟上述没有括号时一样,匹配到 "2345  3456" ,只不过只输出(/w+)匹配     到的结果 即"2345",第二次匹配同理从"4567" 开始,匹配到"4567  5678",但是还是只是输出"4567"

 import re

string="2345  3456  4567  5678"

regex=re.compile("(\w+)\s+\w+")

print(regex.findall(string))

#['2345', '4567']

由于同学的正则匹配有括号(分组),所以只会输出组中的内容。

http://img1.sycdn.imooc.com//climg/5e49122509281cc212370420.jpg

如果我解决了同学的问题,请采纳!学习愉快^_^。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师