正则表达式是用于处理字符串的强大工具, 检查一个字符串是否与某种模式匹配。
元字符 :
# . ^ $ * + ? {} [] | ()
大多数字母和字符会匹配它们自身,有少数特殊字符我们称为元字符,它们不能匹配自身,它们定义了字符类、子组匹配和模式重复次数等
。
元字符的使用
. 匹配除换行符之外的所有的字符
d 匹配0~9的数字
s 匹配任意的空白符,包括空格,制表符(Tab),换行符等
w 匹配字母或数字或下划线或汉字等
表示单词的边界
^ 脱字符,匹配输入字符串的开始的位置
$ 匹配输入字符串的结束位置
. 表示匹配点号本身
D、S、W、B是与小写的相反的作用
匹配次数
{M,N} M和N 为非负整数,其中M<=N表示前面的匹配M~N次
{M,} 表示需要匹配M次
{,N} 等价于{0~N}
{N} 表示需要匹配N次
* 匹配前面的子表达式零次或多次,等价于{0,}
+ 匹配前面的子表达式一次或多次,等价于{1,}
? 匹配前面的子表达式零次或一次,等价于{0,1}
注:*?、+?、{n,m}? 贪婪与懒惰
子组匹配
[ ] 字符类,将要匹配的一类字符集放在[]里面
例如:
[ . ? * ( ) {} ] 匹配里面的这些符号
[0-9] 匹配0到9的数字相当于d
[^d] 匹配除数字以外的字符,相当于D
[a-z] 匹配所有的小写字母
[^a-z] 匹配非小写字母
| 相当于或(or)分支条件
例如:
A | B 匹配字母A或者B 与[AB]是一样的
分组
() 分组,将要匹配的一类字符集放在()组成一个小组
例如:
(d){3} 匹配一个三位数
a(bc)*匹配一个a和0个或多个bc
a(b|c) 匹配ab或者ac
re模块
re.compile() 编译正则表达式为模式对象
re模块的常用方法
match() 判断一个正则表达式是否从开始处匹配字符串
search() 遍历字符串,找到正则表达式匹配的第一个位置
findall() 遍历字符串,找到正则表达式匹配的所有位置并以列表的形式返回
查看匹配对象中的信息
group() 返回匹配到的字符串
star()返回匹配的开始位置
end()返回匹配的结束位置
span() 返回一个元组表示匹配位置(开始,结束)