正则表达式是学习网络爬虫非常重要的基础。
这个基础没打扎实,寸步难行,通过以下几步可以深刻理解python正则表达式.每一步都不能错过
如果您能耐心看完,那么你讲很容易理解正则表达式。 ?
在文章得最后,还会通过几个实例加深理解。
1、懂得正则表达式模块引入
import re 引入正则表达式模块
2、原子概念
可以说是正在表达式得最小单位,必须理解透彻。
分4类:a、普通字符原子 如:数字、字母、下划线等
b、非打印字符原子 如:\n 、\t 对应换行、Tab
c、通用字符原子(很重要) 如:\w 表示任意一个字母、数字、下划线;\s一个空白字符;\d 任一个十进制
对应大写相反意思,\W表示任意一个 非字母、数字、下划线;\S一个非空白字符,不包括换行符;
d、原子表 如:pat="pyth[org]n" [org]就是一个原子表,[org]=o r g三个字母中的一个。只能是其中一个。
3、元字符
写字符筛选规则经常用到的符号,平时看不懂得Python符号也在这里。
. 表示匹配任意一个字符,除了换行符
^匹配字符串开始的位置 ; $匹配字符串结束的位置
* 匹配多次 如 :“s*”=“sssss……”
?匹配一次或零次 如:“s?”=“ss”或“s”
+ 匹配一次或多次 如:“s+”="s"或“sssss”
{}限制出现次数 如 "t{3}" =“ttt”;
"t{3,}"表示至少出现3次 ; “t{3,7}”表示出现次数3-7次之间
| 表示或 ,如 [.com|.cn]='.com' 或 '.cn'
4、模式修正符
这个其实是正则函数中的一个参数。 说几个常见的
re.i 匹配时不在乎大小写 ;re.M多行匹配,不局限一行 ;re.S 让\S包括换行符,原来表示非空字符。
5、贪婪模式和懒惰模式
贪婪就是尽可能多匹配,懒惰尽可能少匹配。
后面会举例说明。
5、正则表达式函数
终于到这一步了。常用的就3个。待会会通过实例比较三个函数区别
A、re.search(pat,string,模式修正符) 匹配整个String,看是否有符合pat规则,模式修正符可有可无。
B、re.match(pat,string,模式修正符) 和search函数区别,match必须从String第一个字符开始匹配,是否有符合Pat规则的字符。
C、上面2个函数只匹配出一个符合Pat规则的字符串,下面函数会匹配所有符合Pat规则的字符串.
re.compile(pat).findall(string)
6、各种实例实验
Pat表示匹配的规则
String表示在这个里面匹配
实验一、贪婪、懒惰模式匹配区别
pat1贪婪模式 (.*) , pat2懒惰模式 (.*?)
贪婪模式: 结果:
懒惰模式: 结果:
注: 结果中span表示成功匹配范围 字符串下标表示,match表示比配到的字符串
实验二、编写一个爬网页上网址的规则
网页的规则有很多种,我只写一种简单的。 如果看不懂,请用心看前面的基础概念
pat="[a-zA-Z]+://[\S]+[.com|.cn]"
分步解析:[a-zA-Z]+ :表示字母出现一次或多次,[\S]+:表示非空字符出现一次或多次 ,[.com|.cn]:.com或.cn中的一种
结果:
若有错误还请在评论区留言。 每天努力一点点 ?