1、元字符
. ^ $ * + ? {} [] \ | ()
大多数字母和字符会匹配它们自身,有少数特殊字符我们称为元字符,
它们不能匹配自身,它们定义了字符类、子组匹配和模式重复次数等
. # 匹配除换行符之外的所有的字符
\d # 匹配0~9的数字
\s # 匹配任意的空白符,包括空格,制表符(Tab),换行符等
\w # 匹配字母或数字或下划线或汉字等
\b # 表示单词的边界
^ # 脱字符,匹配输入字符串的开始的位置
$ # 匹配输入字符串的结束位置
\. # 表示匹配点号本身
\D、\S、\W、\B # 与小写字母的作用相反
\D # 除了数字以外的字符
匹配次数
{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
2、re模块
re 模块的常用方法:
re.compile() # 编译正则表达式为模式对象
match() # 判断一个正则表达式是否从开始处匹配字符串
search() # 遍历字符串,找到正则表达式匹配的第一个位置
findall() # 遍历字符串,找到正则表达式匹配的所有位置并以列表的形式返回
查看匹配对象中的信息:
group() # 返回匹配到的字符串
star() # 返回匹配的开始位置
end() # 返回匹配的结束位置
span() # 返回一个元组表示匹配位置(开始,结束)
sub # 替换
split # 与字符串方法 split 类似