2.爬虫-正则表达式

正则表达式在线测试工具:http://tool.oschina.net/regex/#

常见匹配模式

正则:

常规匹配

泛匹配 . *

匹配目标

group(n):第n个用小括号括起来的

贪婪匹配

可以看到group(1)只匹配到了‘7’一个数字,因为.*会尽可能多的匹配字符,所以称为贪婪模式匹配

非贪婪匹配

这次group(1)匹配到了‘1234567’,为什么呢,?指定匹配模式为非贪婪模式,会尽可能匹配少的字符。

匹配模式

为什么结果时None呢?因为This后面有个换行符,而.*不能匹配换行符。但是当我们指定匹配模式,就可以匹配到换行符了。

转义

匹配特殊字符是需要使用\进行转义

总结:尽量使用泛匹配、使用括号得到匹配目标、尽量使用非贪婪模式、有换行符就用re.S


如图,同样的字符串,同样的正则表达式,re.match匹配不出结果,因为re.match是从字符串的起始位置开始匹配的。

总结:为了方便,能用re.search就不用re.match。

匹配练习

目的 匹配齐秦,往事随风。

匹配任贤齐 沧海一声笑

去掉匹配模式re.S查看一下匹配到了什么

匹配所有含有超链接的内容:

匹配所有歌名:

把数字替换成‘替换’两个字

替换的同时保存原字符串本身,\1 代表group(1)

使用sub和findall结合匹配所有歌名:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • python的re模块--细说正则表达式 可能是东半球最详细最全面的re教程,翻译自官方文档,因为官方文档写的是真...
    立而人阅读 23,013评论 4 46
  • Python中的正则表达式(re) import rere.match #从开始位置开始匹配,如果开头没有则无re...
    BigJeffWang阅读 7,181评论 0 99
  • re模块手册 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以...
    喜欢吃栗子阅读 4,051评论 0 13
  • 搞懂Python 正则表达式用法 Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一...
    厦热阅读 1,624评论 0 2
  • 正则表达式、re模块、匹配单个字符、匹配多个字符、匹配开头结尾、匹配分组、re模块的高级用法、python贪婪和非...
    Cestine阅读 1,543评论 0 1