正则表达式
正则匹配:模糊匹配(不是精确匹配)
1. [] # 代表原子表
[abc] # 匹配一个字母a、b、c
[a-z] # 匹配任意一位小写字母
[a-zA-Z] # 匹配任意一位字母
[0-9] # 匹配0-9
2. ^ # 以什么开头,在院子表内写是以什么开头,在原子表以外写是取反,相当于\A
[^a-z] # 匹配以字母开头的字符串
^a[a-zA-Z] # 匹配以字母a开头的两位字母
^[a-zA-Z] # 匹配任意一位非字母
3. $ # 以什么结尾,通常^和$结合使用,这样才能真正限制匹配的内容,相当于\Z
^1[3-8][0-9]{9}$ # 匹配手机号
4. {m} # 表示前面的数量 m 个,不能单独使用
a{3} # 匹配3个a
[a-zA-Z]{3} # 匹配任意3位字母
[^a-zA-Z]{3} # 匹配任意3位字母作为开头的串
[^a-zA-Z]{3}[0-9]{8}$ # 匹配任意3位字母开头,后面8位数字,共11位字符的串
5. {m, n} # 表示前面的数量m - n 位
[^1-9][0-9]{4, 10}$ # 匹配qq号
6. {, m} # 至少 m 个,不能单独使用
7. ? # 可有可无
[1-9][0-9]? # 匹配 1- 99
[1-9][0-9]{0, 1} # 匹配1 - 99
-?[0-9] #匹配一位整数(正负)
8. . # 匹配换行符以外的任意字符
9. * # 匹配前面一个字符任意次
10. .* # 匹配换行符意外的任意长度字符(贪婪模式)
11. .*? # 匹配换行符意外的任意长度字符(非贪婪模式)
12. + # 表示匹配数量至少 1 次 {1, }
13. .+ # 换行符以外的字符至少 1 次(贪婪模式)
14. .+? # 换行符以外的字符至少 1 次(非贪婪模式)
15. () # 代表一个单元,子存储(可以获取到括号里匹配的值)
16. | # 或
二 不转成正则对象的修正符
- re.I # 忽略大小写
- re.M #多行模式,改变^和$的行为
- re.S # 改变点的行为,可以使 . 匹配换行符
三 正则的函数
使用正则,需要导入re模块
- re.match(正则, 字符串, 修正符)
匹配成功:返回匹配的对象,用group获取
匹配失败:返回None
注意:
从第一位开始进行匹配
只匹配一次 - re.search(正则,字符串,修正符)
匹配成功:返回匹配的对象,用group获取
匹配失败:返回None
注意:
只要字符串包含就可以
只匹配一次