目录
4.1正则表达式常用符号
4.1.1一般字符
正则表达式的一般字符有3个如下表
字符 | 含义 |
. | 匹配任意单个字符 |
\ | 转义字符(把有特殊含义的字符转换成字面意思) |
[...] | 字符集。对应字符集中的任意字符 |
说明:
(1)“.”字符为匹配任意单个字符。例如,a.c可以的匹配结果为abc、aic、a&c等,但不包括换行符。
(2)“\”字符为转移字符,可以把字符改变为原来的意思。听上去不是很好理解,例如“.”字符是匹配任意的单个字符,但有时不需要这个功能,只想让它代表一个点,这时就可以使用“\.”,就能匹配"."了。
4.1.2预定义字符集
正则表达式预定义字符集共有6个如下表所示
预定义字符集 | 含义 |
\d | 匹配一个数字字符。等价于【0-9】 |
\D | 匹配一个非数字字符。等价于【^0-9】 |
\s | 匹配任何空白字符,包括空格、制表符、换页符等。等价于【\f\n\r\t\v】 |
\S | 匹配任何非空白字符。等价于【^\f\n\r\t\v】 |
\w | 匹配不包括下划线的任意单词字符。等价于【A-Za-z0-9】 |
\W | 匹配任何非单词字符。等价于【^A-Za-z0-9】 |
正则表达式的预定义字符集易于理解,在爬虫实战中,常常会匹配数字而过滤掉文字部分的信息。例如“数字 3450”,只需要数字信息,通过“\d+”来匹配数据,“+”为数量词,表示1次或无限次,这样便可以匹配到所有的数字信息。
4.1.3数量词
正则表达式中的数量词列表
数量词 | 含义 |
* | 匹配前一个字符0次或无限次 |
+ | 匹配前一个字符1次或无限次 |
? | 匹配前一个字符0次或1次 |
{m} | 匹配前一个字符m次 |
{m,n} | 匹配前一个字符m到n次 |
4.1.4边界匹配
边界匹配的关键符号如下表
边界匹配 | 含义 |
^ | 匹配字符串开头 |
$ | 匹配字符串结尾 |
\A | 仅匹配字符串开头 |
\z | 仅匹配字符串结尾 |
介绍一下(.*?),“()”表示括号的内容作为返回结果,“.*?”是非贪心算发,匹配任意的字符。例如:
import re
a = 'xxIxxjshdxxlovexxsffaxxpythonxx'
infos = re.findall('xx(.*?)xx',a)
print(info)