在学习爬虫的过程中,正则表达式能够帮助我们根据某些复杂的规则去处理复杂的字符串,它是一个特殊的字符序列,在Python中,系统自带的re模块包含了正则表达式的全部功能,下面我们进入正则表达式的学习。
1. 元字符
正则表达式的结构由普通字符和元字符组成,普通字符就是我们日常使用的文本字符,而元字符有它特定的含义,具有匹配信息的功能。
常用的正则表达式元字符如下表格:
元字符 | 功能 |
\ | 转义符,表示位于‘\’之后的为转义字符。 |
. | 任意一个字符 |
? | 匹配‘?’前面的字符一次或零次 |
+ | 匹配‘+’前面的字符一次或多次 |
* | 匹配‘*’前面的字符零次或多次 |
- | 用在[]之内用来表示范围 |
^ | 匹配行首,匹配以^后面的字符开头的字符串 |
$ | 匹配行尾,匹配以$之前的字符结束的字符串 |
() | 定义分组 |
[] | 定义字符类 |
{} | 定义量词 |
| | 选择符号,或关系 |
\b | 匹配单词头或单词尾 |
\B | 与\b相反 |
\d | 匹配任何数字,相当于[0-9] |
\D | 与\d相反 |
\s | 匹配任何空白字符 |
\S | 与\s相反 |
\w | 匹配任何字母、数字以及下划线,相当于[a-zA-Z0-9] |
\W | 与\w相反 |
\z | 匹配字符串结束 |
\G | 匹配最后完成的位置 |
\A | 匹配字符串开始 |
2. 元字符功能
1) 字符类[]
例如在一个列表中有‘apython’、‘bpython’、‘cpython’、‘dotcpp’四个元素,我们使用‘[abc]python’可以直接匹配到前面三个元素。
2) [a-zA-Z0-9]
这个可以匹配一个任意大小写字母或者数字,等同于\w。
3) 重复 {}
如果我们使用{n},即‘pyt{}on’,只能匹配到python,使用{n,}可以匹配至少n次,使用{n,m}可以匹配至少n次,最多m次。
4) 开始于结束字符
使用‘^’和‘$’可以匹配一行字符串的开始和结束。
5) a|b
可以匹配a或者b。
6) 匹配出现次数
语法格式如下:
import re s = '1234567' p1 = r'\d?' print(re.search(p1,s))
可以改为\d*或\d{2,3}或d+等来进行匹配。
输出结果为:
<re.Match object; span=(0, 1), match='1'>
由于‘?’为匹配0次或一次,所以匹配了出现数字一次。
3. 总结
本节我们主要总结了正则表达式里的元字符及几种常用的功能,这些元字符在我们后续的学习中会涉及到,大家可以回过头来参考本节的内容。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程