正则表达式虽然不是python语言,但在python爬虫中却有着普遍的应用,可以说没有正则表达式的爬虫是一个没有灵魂的爬虫,话不多说,直接上干货!
首先介绍一个验证正则表达式的在线平台:https://regex101.com/
高亮部分即为提取到的内容。
-
元字符
- \\d 匹配所有数字
- \\w 匹配所有数字、字母、下划线
- \\D 除了数字以外的内容
- \\W 除了数字、字母、下划线以外的内容
- \\S 匹配所有非空白
- [a,b,c] 匹配a,b,c的内容
- [^a,b,c] 匹配除了a,b,c的内容
- \\s 匹配空白
- \\b 匹配单个单词边界
-
量词
- 元字符+ 元字符出现1次或多次(等同于{1, })
- 元字符* 前面的元字符出现0次或多次,尽可能多的拿到数据(等同于{0, })
- 元字符? 前面的元字符出现0次或一次
-
匹配字符
- 数字 [0-9]
- 小写字母 [a-z]
- 大写字母 [A-Z]
- 特殊字符 [\\特殊字符]
-
^
- 放在区间里表示取反
- [^0-9] 表示匹配非数字
- [^a-z] 表示匹配非小写字母
- 放在区间外面表示匹配字符串开头(^python 表示以python开头的内容)
-
惰性匹配
- .* 匹配最远的字符
- .*? 匹配最近的字符(惰性匹配)
- 字符串:今天晚上一起吃鸡呀(匹配:晚上.*?吃鸡) 结果:晚上一起吃鸡
-
分组
-
分组的回溯引用
eg:在 我喜欢你 我喜欢 我喜欢我 喜欢 喜欢你
正向先行断言(?=表达式) 取出喜欢,喜欢的后面必须有”你“
反向先行断言 喜欢(?!你) 即喜欢后面没有”你“
正向后行断言(?<=我)喜欢(?=你) 喜欢的前面右”我“,后面有”你“
反向后行断言(?<!我)喜欢(?!你) 喜欢的前面没有我,后面没有你
本文均自己整理,时间也比较赶,可能有的地方会存在问题,可以评论留言,看到了就会改。
来源:https://www.cnblogs.com/xiaozebuxiao/p/15863331.html
图文来源于网络,如有侵权请联系删除。