import re
#匹配元字符
# str1="heltzzomll"
# zz=re.findall("t..om",str1) #一个点代表匹配任意的一个字符,除了换行符
# print(zz)
# z1=re.findall("^hel...o",str1)#^匹配是否以h开头要找到字符
# print(z1)
# z2=re.findall("z...l$",str1)#$匹配是否是以l结尾的字符
# print(z2)
# ret=re.findall('bcd*','abcdjkdd')#*匹配(0,∞无穷)例如后面已经没有d了,只有j所以只输出bcd
# print(ret)
# ret0=re.findall("bce*",'abcdjkdd')#虽然匹配字符最后已经没有e,但元字符数*最少可以是0所以还是会匹配出来bc
# print(ret0)
# ret1=re.findall("bce*","abceeeeddd")#e后面匹配是有e所以会输出bceeee
# print(ret1)
# re2=re.findall("abc+","abcccceeeeddd")+#匹配(1,∞无穷)最少有符合条件的1个
# print(re2)
# re3=re.findall("abd+","abcccceeeeddd")#因为匹配结尾的d一个也没有匹配上所以输出为空
# print(re3)
# ret=re.findall("abc?","abccccdeeedd")#?匹配(0,1)可以一个没有,但是多的时候也只匹配一个
# print(ret)
# ret=re.findall("abc?","abddeefffss")#即使要匹配的字符abc最后一个c不存在,仍然会匹配出来ab
# print(ret)
# ret=re.findall("abc{1,4}","abccccccccdede")#{}匹配指定的个数输出abcccc输出4个c第1个到第4个
# print(ret)
# ret=re.findall("abc{1,4}","abcccecccdegefefe")#输出3个c到第4个都时候不在是C只能输出来3个
# print(ret)
#* + {}都为贪婪匹配有多少匹配出来多少,?为惰性匹配,无论多少也只给你匹配出来1个
#综合运用
# ret=re.findall("abc*?","abcdcccccc")#因为?是惰性匹配,前面的*是0到无穷,?就直接忽略掉c输出ab
# print(ret)
# ret=re.findall("abc+?","abccccc")#因为?是惰性匹配,但前面的+是1到无穷,最小是1所以输出来abc
# print(ret)
#匹配原字符集
str1="wwwbcomw123QQw99wZZwacom"
# ret=re.findall("w[ab]com",str1)#[]里的字符关系为或的关系,匹配wacom或者wbcom符合这两个里面的任意两个即可
# print(ret)
#注意元字符集里除了^\-外没有特殊符号,例如*,?+,都是做为普通字符集来处理的
# ret=re.findall("w[a-z]",str1) #字符集里特殊字符-,其中a-z表示啥小写a-z之间的任意字母还有大写的A-Z,0-9等等
# print(ret)
# ret=re.findall("w[^a-z]",str1)#^代表匹配字符集里非a-z的字符
# print(ret)
# ret=re.findall("z[\d]","z213wwwww")#\为转义字符,可以把一些特殊功能字符专为普通字符也可以把普通字符专为有意义的
# print(ret)
#\d匹配任何十进制数相当于[0-9] \D匹配任何非数字的字符相当于[^0-9]
#\s匹配任何空白字符,相当于[\t\n\r\f\v] \S匹配任何非空白字符相当于[^\t\n\r\f\v]
#\w匹配任何字母数字字符,相当于[a-zA-Z0-9] \W匹配任何非字母数字字符相当于[^a-zA-Z0-9]
#例子说明:2*3(34-2*(4-2)+23)取出最里层括号里的内容
str2="2*3(34-2*(4-2)+23)"#先用\(匹配出来(;在用[^()]把括号排除出去,相当于把(4-2)里4匹配出来了后面如果不加*的话,到)就结
#束了永远匹配不出来后面数字,因为只有3就成了(4),肯定是匹配不出来的所以实际匹配规则就是([^()]*)
ret=re.findall("\([^()]*\)",str2)#此处的*是匹配出来非括号的所有字符
print(ret)