正则表达式

正则表达式是用于处理字符串的强大工具, 检查一个字符串是否与某种模式匹配。

元字符 :

#  .   ^   $   *   +   ?   {}  []   \   |   ()

大多数字母和字符会匹配它们自身,有少数特殊字符我们称为元字符,它们不能匹配自身,它们定义了字符类、子组匹配和模式重复次数等

元字符的使用

.    匹配除换行符之外的所有的字符 
\d  匹配0~9的数字   
\s   匹配任意的空白符,包括空格,制表符(Tab),换行符等
\w 匹配字母或数字或下划线或汉字等  
\b  表示单词的边界
^    脱字符,匹配输入字符串的开始的位置
$   匹配输入字符串的结束位置
\.   表示匹配点号本身
\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()  返回一个元组表示匹配位置(开始,结束)
posted @ 2018-08-24 13:24  冉庆之  阅读(121)  评论(0编辑  收藏  举报