Python中的re.search和re.findall之间的区别2
2015-07-27 17:48
821 查看
我好像已经有点懂findall[0],后面的[0]是什么意思了,因为今天刚巧修改了各种错误,接下来通过代码讲解
网页源码:
可知:在标签对<li></li>中,有两对<div></div>标签
正则表达式:
输出:
div0,div2属于search组
div,div1属于findall组
结果很明显,findall后的[0]和[1]就像是数组下标,而且能准确识别出所有的div标签对
然而,search并不能识别出所有的div标签对,而且group(0)和group(1)的结果相同,都只能识别出第一个div标签对
到这里,或许有人会想如果是group(2)呢?
我当然也尝试了,
网页源码:
<li id="1671" test="0" deg="0" > <div class="lessonimg-box"> <a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"> <img src="http://a1.jikexueyuan.com/home/201507/23/6d26/55b0460f2db0e.jpg" class="lessonimg" title="AFNetworking 2.x 网络解析详解" alt="AFNetworking 2.x 网络解析详解"> <div class="lessonplay" style="opacity: 0;"> <i class="playericon" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"></i> </div> </a> </div> <div class="lesson-infor" style="height: 88px;"> <h2 class="lesson-info-h2"><a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24">AFNetworking 2.x 网络解析详解</a></h2> <p style="height: 0px; opacity: 0; display: none;"> 本课程将会带领大家使用 iOS 开源库中排名第一的 AFNetworking 2.x 网络请求库,包括讲解基本的 GET、POST 请求的使用,文件(图片)上传,断点下载等知识。最后会分享 AFNetworking 2.x 设计精良的地方。 </p> <div class="timeandicon"> <div class="cf"> <dl> <dd class="mar-b8"><i class="time-icon"></i><em>6课时 55分钟</em> </dd> <dd class="zhongji"> <i class="xinhao-icon2"></i><em>中级</em> </dd> </dl> <em class="learn-number">2313人学习</em> </div> <div class="cf"> <div class="lessonicon-box"> <a href="http://www.jikexueyuan.com/course/ios/"> <img width="16" src="http://a1.jikexueyuan.com/home/201411/04/3567/5457df3530e14.png" alt="ios" title="iOS" jktag="&posGP=101001&posArea=0002&posOper=2005&aCId=1671&posColumn=1671.1&aCCate=ios" > </a> </div> </div> </div> </div> </li>
可知:在标签对<li></li>中,有两对<div></div>标签
正则表达式:
def getinfo(self,eachclass): div0 = re.search('(<div.*?</div>)',eachclass,re.S).group(0) div2 = re.search('(<div.*?</div>)',eachclass,re.S).group(1) div = re.findall('(<div.*?</div>)',eachclass,re.S)[0] div1 = re.findall('(<div.*?</div>)',eachclass,re.S)[1] print 'div:'+div print 'div1:'+div1 print 'div0:'+div0 print 'div2:'+div2
输出:
div:<div class="lessonimg-box"> <a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"> <img src="http://a1.jikexueyuan.com/home/201507/23/6d26/55b0460f2db0e.jpg" class="lessonimg" title="AFNetworking 2.x 网络解析详解" alt="AFNetworking 2.x 网络解析详解"> <div class="lessonplay" style="opacity: 0;"> <i class="playericon" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"></i> </div> div1:<div class="lesson-infor" style="height: 88px;"> <h2 class="lesson-info-h2"><a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24">AFNetworking 2.x 网络解析详解</a></h2> <p style="height: 0px; opacity: 0; display: none;"> 本课程将会带领大家使用 iOS 开源库中排名第一的 AFNetworking 2.x 网络请求库,包括讲解基本的 GET、POST 请求的使用,文件(图片)上传,断点下载等知识。最后会分享 AFNetworking 2.x 设计精良的地方。 </p> <div class="timeandicon"> <div class="cf"> <dl> <dd class="mar-b8"><i class="time-icon"></i><em>6课时 55分钟</em> </dd> <dd class="zhongji"> <i class="xinhao-icon2"></i><em>中级</em> </dd> </dl> <em class="learn-number">2331人学习</em> </div> div0:<div class="lessonimg-box"> <a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"> <img src="http://a1.jikexueyuan.com/home/201507/23/6d26/55b0460f2db0e.jpg" class="lessonimg" title="AFNetworking 2.x 网络解析详解" alt="AFNetworking 2.x 网络解析详解"> <div class="lessonplay" style="opacity: 0;"> <i class="playericon" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"></i> </div> div2:<div class="lessonimg-box"> <a href="http://www.jikexueyuan.com/course/1671.html" target="_blank" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"> <img src="http://a1.jikexueyuan.com/home/201507/23/6d26/55b0460f2db0e.jpg" class="lessonimg" title="AFNetworking 2.x 网络解析详解" alt="AFNetworking 2.x 网络解析详解"> <div class="lessonplay" style="opacity: 0;"> <i class="playericon" jktag="&posGP=103001&posArea=0002&posOper=2004&aCId=1671&posColumn=1671.24"></i> </div>
div0,div2属于search组
div,div1属于findall组
结果很明显,findall后的[0]和[1]就像是数组下标,而且能准确识别出所有的div标签对
然而,search并不能识别出所有的div标签对,而且group(0)和group(1)的结果相同,都只能识别出第一个div标签对
到这里,或许有人会想如果是group(2)呢?
我当然也尝试了,
div3 = re.search('(<div.*?</div>)',eachclass,re.S).group(2)
结果报错了,见插图
因此,建议多用findall
相关文章推荐
- Python多线程结合队列下载百度音乐的方法
- python安装
- Google's Python Class(六)——Python 正则表达式
- 使用python求字符串或文件的MD5
- 关于python在cmd中输出中文乱码的问题
- 用Python进行自然语言处理-2. Accessing Text Corpora and Lexical Resources
- python中string的操作函数
- SVN弱密码扫描(Python)
- django-mysql 中的金钱计算事务处理 分类: 小技巧 python学习 mysql 2015-07-27 16:52 10人阅读 评论(0) 收藏
- python学习总结
- 17个新手常见Python运行时错误
- python实现链表
- 在Python的Django框架中创建语言文件
- Vim as Python IDE on windows(转)
- python-re模块-使用案例
- 给Python初学者的一些技巧
- python基础教程总结15——3 XML构建网址
- 用Python进行自然语言处理-1. Language Processing and Python
- python(2.7.10) 安装后启动错误:IDLE's subprocess didn't make connection
- 在Python中的Django框架中进行字符串翻译