在使用 Python 编写爬虫的过程中,re 模块通常做为一种解析方法来使用。通过审查网页元素来获取网页的大体结构,然后使用解析模块来提取你想要的网页信息,最终实现数据的抓取。
下表列出了常用的正则表达式元字符:
元字符 | 匹配内容 |
---|---|
. |
匹配除换行符以外的任意字符 |
\w |
匹配所有普通字符(数字、字母或下划线) |
\s |
匹配任意的空白符 |
\d |
匹配数字 |
\n |
匹配一个换行符 |
\t |
匹配一个制表符 |
\b |
匹配一个单词的结尾 |
^ |
匹配字符串的开始位置 |
$ |
匹配字符串的结尾位置 |
\W |
匹配非字母或数字或下划线 |
\D |
匹配非数字 |
\S |
匹配非空白符 |
`a | b` |
() |
正则表达式分组所用符号,匹配括号内的表达式,表示一个组。 |
[...] |
匹配字符组中的字符 |
[^...] |
匹配除了字符组中字符的所有字符 |
下表列出了常用的正则表达式量词:
量词 | 用法说明 |
---|---|
* |
重复零次或者更多次 |
+ |
重复一次或者更多次 |
? |
重复0次或者一次 |
{n} |
重复n次 |
{n,} |
重复n次或者更多次 |
{n,m} |
重复n到m次 |
下表列出了常用的正则表达式字符组:
正则 | 说明 |
---|---|
[0123456789] |
在一个字符组里枚举所有字符,字符组里的任意一个字符 |
[0-9] |
也可以用-表示范围,[0-9] 就和 [0123456789] 是一个意思。 |
[a-z] |
同样的如果要匹配所有的小写字母,直接用 [a-z] 就可以表示。 |
[A-Z] |
[A-Z] 就表示所有的大写字母。 |
[0-9a-fA-F] |
可以匹配数字,大小写形式的 a~f,用来验证十六进制字符。 |
正则表达式默认为贪婪匹配,也就是尽可能多的向后匹配字符,比如 {n,m} 表示匹配前面的内容出现 n 到 m 次(n 小于 m),在贪婪模式下,首先以匹配 m 次为目标,而在非贪婪模式是尽可能少的向后匹配内容,也就是说匹配 n 次即可。
贪婪模式转换为非贪婪模式的方法很简单,在元字符后添加“?”即可实现,如下所示:
元字符(贪婪模式) | 非贪婪模式 |
---|---|
* |
*? |
+ |
+? |
? |
?? |
{n,m} |
{n,m}? |
使用正则表达式匹配特殊字符时,则需要在字符前加\
表示转意。常见的特殊字符如下:
* + ? ^ $ [] () {} | \