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