python中的re模块——正则表达式

re模块:正则表达式

正则表达式:为匹配字符

import re   #导入re模块
#re.findall('正则表达式','被匹配字符')  re模块下findall用法
在正则表达式中:
w   表示匹配一个字母、数字、下划线
W   匹配一个非字母、数字、下划线(小写w的取反)
s   小写s匹配任意空白字符
S   大写匹配任意非空白字符
d   匹配任意数字字符
D   匹配任意非数字字符

   只匹配换行符
	   只匹配制表符
^或者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  以
为分隔符,多行匹配
如果字符中有  'ac aaa' 那在python语法中可写成
re.findall('a\\c','ac aaa')
或者 re.findall(r'a\c', 'ac 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

 

原文地址:https://www.cnblogs.com/5j421/p/10098164.html