正则提取字符方式
[abc] | abc中的一个 |
---|
[a-z] | a-z中的一个 |
[0-9] | 0-9中的一个数字 |
[a-f0-5] | a-f或者0-5 一个就可以 |
[ab] [de][12] | 每个[]取一个,连起来 |
元字符
. 任意单字符 ,匹配不了 \n
就想表示字符串的 . 这么写 \.
\d | 一个数字 相当于[0-9] |
---|
\D | 一个 非 数字 |
\w | 一个数字字母或者下划线。相当于[a-zA-Z0-9_] (中文) |
\W | \w的反面 |
\s | 空白 |
\S | 非空白 |
\b | 单词边界 r’\bis\b’ 特殊的地方。单词边界前一定要加一个r’’ |
13\d\d\d\d\d\d\d\d\d 13\d{9}
1[3456789]\d\d\d\d\d\d\d\d\d
量词:
{m} | m 个 |
---|
{m,n} | m-n个 |
{1,} | 1个以上 |
{0,} | 0个以上 |
{0,1} | 0次或一次 |
* | 相当于 {0,} |
---|
+ | 相当于 {1,} |
? | 相当于 {0,1} |
- 1:小例子:
\w+@qq.com 一个qq邮箱
\w+@\w+.\w+ 任意的一个 xx@xxx.xxx 的邮箱
分组
(name|age|sex) 一个name 或者 age 或者 sex
贪婪模式:
reg2 = re.compile(‘a\w*b’) | 会 尽量长的去寻找结尾的b |
---|
reg2 = re.compile(‘a\w*?b’) | 只要axxb有即可。一个就行 |
贪婪模式用在爬虫提取数据中
# 导包
import re
# 设置匹配模式
# 其实就是用你多个重复中的提取一个需要的地方
#(.*?)两边给标识,即提取了两个标识中间的部分
#.*?两边给标识,就是把两个标识中间的部分全部省略
#案例
# 创建提取格式
reg=re.compile(中间为提取省略部分)
# 利用提取格式提取
赋值给一个变量,方便调用=re.findall(reg,需要从中提取信息的变量代表名)