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结合匹配所有歌名:

你可能感兴趣的:(2.爬虫-正则表达式)