# #__author__:Administrator}
# #data: 2017/12/16
#
# import re
#
# # m = re.findall('w\w{2}l','hellow world')
# # print(m)
#
# # rel = re.findall('xuxu','2222222222xuxu11111222')
# # print(rel)
#
# #元字符
#
# #1.通配符' . '
# # m = re.findall('w..l','hellow world')
# # print(m)#' . '只能代指任意一个字符,不能代替换行符\n
#
# # #2.' ^ '
# # ret = re.findall('^h...o','sadfafahellow')#只在开始匹配
# # print(ret)
# #
# # #3.‘ $’
# # ret = re.findall('h...o$','sadfafahellow1111111')#只在结尾匹配
# # print(ret)
# #
# # #4.‘ * ’:重复匹配【0,正无穷】
# # ret = re.findall('fa*','sadfafaaaaaaaaaaaabbbbbbbbb')
# # print(ret)
# # ret = re.findall('fa*','sadf')#['f'],因为可以陪陪0次
# # print(ret)
#
# #45‘ + ’重复匹配,至少匹配一次
# ret = re.findall('fa+','sadf')#['f'],因为可以陪陪0次
# print(ret)
# ret = re.findall('fa+','sadfa')#['f'],因为可以陪陪0次
# print(ret)
#
# #‘ ?’只能匹配0到1个数
# ret = re.findall('fa?','sadfbbaaaaaaafa')#['f'],因为可以陪陪0次
# print(ret)
#
ret = re.findall('abc*?','abccc')
print(ret)#['ab']
意前面的*,+,?等都是贪婪匹配,也就是尽可能的匹配,后面加问号时期变成惰性匹配
# #{}
# ret = re.findall('a{1,5}b','wwwaaaaab')
# print(ret)
#
# #结论
# # *等价于{0,正无穷} +等价于{1,正无穷} ?等价于{0,1}
#
# #[]字符集
# # ret = re.findall('a[b,d]c','abdc')
# ret = re.findall('[a-z]','afb')#['a', 'f', 'b']
# print(ret)
#
# #[]字符集,取消元字符的特殊功能(\,^,-)例外
# ret = re.findall('[w,*]','awbc*')
# print(ret)
#
# ret = re.findall('[1-9,a-z,A-Z]','12afbAB')#['1', '2', 'a', 'f', 'b', 'A', 'B']
# print(ret)
#^放在【】号里表示去反
import re
# ret = re.findall('[^a]', '12afbAB')
# print(ret)#['1', '2', 'f', 'b', 'A', 'B']
# ret = re.findall('[^a,b]', '12afbAB')#非a和b
# print(ret)#['1', '2', 'f', 'A', 'B']
# ‘ \ ’
#反斜杠后面跟元字符去除特殊功能
#反斜杠后面跟普通字符实现特殊功能
#\d 匹配任意数字,等价于 [0-9]
#\D 匹配任意非数字
#\s 匹配任意空白字符,等价于 [\t\n\r\f].
#\S 匹配任意非空字符
#\w 匹配字母数字及下划线
#\W 匹配非字母数字及下划线
#\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
print(re.findall('\d{11}','adb11111111112222222'))
print(re.findall('\D{3}','adb11111111112222222'))
print(re.findall('\sbc','a bc'))
print(re.findall('\S','a bc'))
print(re.findall('\w{4}bc','a112bc'))
#######################################
#匹配出一的个满足条件的结果
ret = re.search('s.b','asdasdsebaaaasab')
print(ret)#<_sre.SRE_Match object; span=(6, 8), match='sb'>
print(ret.group())
ret = re.search('a\.','a.jb').group()
print(ret)#a.
ret = re.search('a\+','a+jb').group()
print(ret)#a+
ret = re.findall('D:\\c','abf\de')
###################################
#()
print(re.search('(as)+','asasdqwdas').group())#asas
print(re.search('(as)|3','asasdqwdas').group())