re模块:正则表达式

正则表达式:为匹配字符



import re   #导入re模块
#re.findall('正则表达式','被匹配字符')  re模块下findall用法
在正则表达式中:
\w   表示匹配一个字母、数字、下划线
\W   匹配一个非字母、数字、下划线(小写w的取反)
\s   \小写s匹配任意空白字符
\S   大写匹配任意非空白字符
\d   匹配任意数字字符
\D   匹配任意非数字字符
\n   只匹配换行符
\t   只匹配制表符
^或者\A    仅从开头匹配,若开头未匹配成功,则结束
$    仅从尾部开始匹配
.    代表一个字符,任意字符,该字符是除换行符之外任意字符 re.DOTALL可以让. 匹配换行符
[]   匹配一个字符,该字符是我们自定义范围,[0-9]表示数字0-9中一个,[a-zA-Z]表示所有小写大写字母中一个,[=\-*/]表示加减乘除符号中任意一个\-表示转译的意思。
[^0-9]  同样表示取反的意思,非0-9
#重复匹配
?   匹配?左边那一个字符出现0或者1次,也就是左边字符有或者无都行
print(re.findall('ab?','a aba abb ab a ab'))
#匹配的结果是['a','ab','a','ab','ab','a','ab']
*   匹配*左边那个字符0到无穷次,只要*左边字符出现就取走
+   匹配+左边一个字符出现1到无穷次
{n,m}  匹配左边字符出现n到m次,{n}指定n次数
.*     匹配任意0个到无穷个字符,贪婪匹配,匹配到最远的结束字符
.*?    匹配任意0个到无穷个字符,非贪婪匹配,匹配至最近的结束字符
|      或者,连接两个正则表达式 ('company|companies')
()     分组,普通分组compan(y|ies)匹配只保留括号内的内容,
            但compan(?y|ies)则取消只保留括号内的内容,会匹配全部的内容
re.I  忽略大小写
re.M  以\n为分隔符,多行匹配
如果字符中有\  'a\c aaa' 那在python语法中可写成
re.findall('a\\\\c','a\c aaa')
或者 re.findall(r'a\\c', 'a\c aaa')

re模块的其他用法
#re.search()  只要匹配一次成功就结束,该方法下有group用法
re.search()  有返回值
res = re.search()  
res.group(0)  0表示全部, 1表示第一分组  2表示第二分组

#re.match()
re.match('abc')  等价于re.search('^abc')
表示只从该字符首开始
obj=re.compile('\d{2}')

print(obj.search('abc123eeee').group()) #12
print(obj.findall('abc123eeee')) #['12'],重用了obj