#正则表达式是用来干嘛的?
#匹配 字符串
# s="hello world"
# print(s.find("llo"))
# print(s.replace("ll","mm"))
# print(s.split("w"))
#string提供的方法是完全匹配
#引入正则表达式,进行模糊匹配
import re
# ret=re.findall("ww{2}l","hello world")
# print(ret)
# red=re.findall("xiong","hfjihdjkjldnjxiongkhddfnhvjkndfkln")
# print(red)#其实这种不适用re,反倒用字符串的方法也可以,杀鸡用牛刀也不好
# 11元字符 "." "^" "$" "*" "?" "{}" "+" "[]" "|" "()" " "
#"."通配符 可以代指除了换行符之外的字符,不过"."只能代指一个东西,一个点代指一个字符
# ret=re.findall("w..l","hello world")
# print(ret)
# "^" 尖角符加了尖角符,就只以最开始的位置匹配
# ret=re.findall('^h...o',"hellodhufduh")
# print(ret)
#"$",代表从结尾开始匹配
# ret=re.findall("h...o$","dfjihhello")
# print(ret)
#"*"重复匹配[0,正无穷)
# ret=re.findall("x.*li","hjkdhjhjdhjjhxionglifhg")#*代表重复前面字符多次
# print(ret)
#"+"重复p匹配[1,无穷大)
# ret=re.findall("x.+li","hjkdhjhjdhjjhxionglifhg")#+代表重复前面字符多次,不过后面代替的字符个数必须大于一
# print(ret)
# ret=re.findall("x.+li","hjkdhjhjdhjjhxlifhg")#+代表重复前面字符多次,不过后面代替的字符个数必须大于一
# print(ret)#[]
#"?"重复匹配[0,1]
# ret=re.findall("a?b","abaadfdbaabaaa")#?代表重复前面字符多次,不过后面代替的字符个数在零到一之间
# print(ret)#['ab', 'b', 'ab']
#"{}"重复匹配,次数自定义
# ret=re.findall("a{3}b","abaadfdbasfadfjaaabaaa")#{}代表重复前面字符多次,不过后面代替的字符个数得自定义
# print(ret)#['aaab']
# ret=re.findall("a{1,3}b","abaadfdbasfadfjaaabaaa")#{}代表重复前面字符多次,不过后面代替的字符个数1到3次,不过里面机构有个贪婪匹配性质
# print(ret)#['ab', 'aaab']
#谈了匹配:在满足条件下的情况,取最多的个数
# 重复匹配结论 *等于[0,正无穷) "+"重复p匹配[1,无穷大) "?"重复匹配[0,1]
#"[]"字符集
# ret=re.findall('a[c,d]x',"acx")#[]里面字符之间有或的关系,可以在里面多选一 #[]取消原字符的特殊功能,除开( ^ -)
# print(ret)
# ret=re.findall('a[c,*]x',"acx")#[]里面的*就不再有重复的意思 #[]取消原字符的特殊功能
# print(ret)
#
# ret=re.findall('a[a-z]x',"acx")#a-z:表示从a到z之间的字符 # []里面字符之间有或的关系,可以在里面多选一
# print(ret)
# ret=re.findall('[^t]',"actx")#尖角号放在[]里面有取反的意思,[]里面有的就除开与里面相同的字符
# print(ret)
#" "反斜杠后面跟元字符去除特殊功能 反斜杠后面跟普通字符实现特殊功能
#d匹配任何十进制数,它相当于[0-9]
# print(re.findall('d(520)',"hdsjh2154542164119545201631624842556527"))
#D匹配任何非数字字符,它相当于类[^0-9]
#s匹配任何空白字符,它相当于类[
fv]
#S匹配任何非空白字符,它相当于类[^
fv]
#w匹配任何字母数字字符,它相当于类[a-zA-Z0-9]
#W匹配任何非字母数字字符,它相当于类[^a-zA-Z0-9]
#匹配一个单词边界,也就是指单词和空格的位置
# print(re.findall(r'i','idfhd,i an li$st'))#寻找特殊字符
# print(re.findall(r'i','$idfhd, i an li$st'))#寻找特殊字符
# ret=re.findall(r'blow','blow')#pyton里面的反斜杠本来就有特殊意义,所以我们必须先用r把转意,在把转义后的给re赋予特殊意义
# print(ret)
# "()"#分组
# # ret=re.search('(?P<xiong>d{3})/(?P<li>w{3})',"hjhaadh123fuaaajkdd/kkkjj")
# "|"#有或的意义在里面
#正则表达式的方法
#findall():所有结果都返回到一个列表里面
#匹配出满足条件的第一个结果
# ret=re.search('s.b',"djkdjjksgbsgbjdjsgb")#返回匹配到的第一个对象(object),对象可以调用group()返回结果
# print(ret)
# print(ret.group())#可以用group调用对象里面的值,一般search于group要联用
#match():#只在字符串开始匹配,也只返回一个对象
# ret=re.match("asd","asbfhjkash")
# print(ret)
#split#分割
# "hdjhdsf".split("s")#字符串的split功能
# re.split('k','djksal')#分割
# ret=re.split('[j,a]','daddjksal')#分割,j把字符分成两份,啊a再对分出来的两部分进行分解
# print(ret)#['d', 'dd', 'ks', 'l']
#sub替换
# ret=re.sub("x...g","li","jdkfjdkjfkjxiongjfkljsdklj")
# print(ret)
#compile#多次匹配,相当于做函数
# re.findall('.com',"hjfhsdjh.comhfdjhj")#z只能查找一次
# re.compile()#多次匹配,相当于做函数
# obj=re.compile('.com')
# ret=obj.findall("hdhfjksdklfj .comdjhfji")
# print(ret)