正则提取字符方式
[abc]abc中的一个
[a-z]a-z中的一个[0-9]0-9中的一个数字[a-f0-5]a-f或者0-5 一个就可以[ab] [de][12]每个[]取一个,连起来
元字符
1:对于 . 的使用,以及字符串的方法
. 任意单字符 ,匹配不了 \n
就想表示字符串的 . 这么写 \.
\d一个数字 相当于[0-9]
\D一个 非 数字\w一个数字字母或者下划线。相当于[a-zA-Z0-9_] (中文)\W\w的反面\s空白\S非空白\b单词边界 r’\bis\b’ 特殊的地方。单词边界前一定要加一个r’’
2:小例子:
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,需要从中提取信息的变量代表名)