re模块
1.\w匹配字母数字下划线
2.\W匹配非字母数字下划线
3.\s匹配任意空字符,\n,\t,\r,空格
4.\S匹配任意非空字符
5.\d匹配0-9数字
6.\D匹配非数字
7."^"从头开始匹配
8."$"从尾开始匹配
9.点(.)匹配任意1个非\n字符,模式设置为DOTALL时,可以匹配任意一个字符
10.?:表示左边的字符可以出现0次或1次
11.:表示左边的字符可以出现任意次
12. .匹配任意数目字符,匹配任意字符,贪婪匹配
13. .*? 非贪婪匹配
14.{m,n}:表示左边的那一个字符出现m到n次
15.()分组,只保留括号里的东西
16.[]括号内可以放任意字符,一个中括号表示一个字符,这一个字符来自中括号中定义的
[0-9a-zA-Z]
"^"出现在中扩号中时表示取反
当-需要被当做普通字符匹配时,而不是表示从哪到哪,只能放到最左边或最右边
17."|"管道符 表示或者
(a|b)表示a或者b,括号会只保留其中的内容,使用(?:a|b),取消括号的保留功能
re.search():找到匹配成功的第一个,返回的是一个对象,若需要返回结果,加.group()显示
re.match():功能与search基本相同,但是是从头找,头没找到就没找到
re.split()
import re
info = "a :c\d/e"
pattern = "[:\/]" #\ / \ 转义两个\ /
res = re.split(pattern,info)
print(res)
['a ', 'c', 'd', 'e']
s="1-2((60-30+(-40/5)(9-25/3+7/399/42998+10568/14))-(-43)/(16-32))"
找出最内侧括号
pattern ="([^()]+)"
a = re.findall(pattern,s)