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