正则表达式的学习
#codeing:UTF-8 #__author__:Duke #date:2018/3/17/017 23:29 import re #方法一 findall 全找 ret = re.findall(‘w\w{2}‘,‘hello world‘) print(ret) # 元字符 11个 # . 通配符 ret = re.findall(‘w..‘,‘hello world‘) # w.. 点点任意指代,一个代指一个字符 print(ret) ret = re.findall(‘w.l‘,‘hello w\rld‘) # w.. 点点任意指代,一个代指一个字符 print(ret) # 不能指代“\"字符 # ^ 尖角符 ret = re.findall("^h...o","hjasdfhello") #只从开始匹配 print(ret) # $ dollor 符号 ret = re.findall("d..e$","hjasdukefhflle") #只从末尾匹配 print(ret) # * 重复匹配 [0 无穷)个 ret = re.findall("du*","hjasdukefhfllfdukeeerffrefwegduuuuekw") #只从末尾匹配 print(ret) # + 重复匹配 [1 无穷)个 ret = re.findall("du+","hjasdukefhfllfdkeeerffrefwegduuuuekw") print(ret) #至少一个u # # + 重复匹配 [1 无穷)个 ret = re.findall("du+","hjasdukefhfllfdkeeerffrefwegduuuuekw") print(ret) #至少一个u # ? 0或则1个 d ret = re.findall("d?u","hjasdukefhfllfdkeeerffrefwegduuuuekw") print(ret) # { } 在区间内均可 ret = re.findall("du{1,2}","hjasdukefhfllfdkeeerffrefwegduuuuekw") print(ret) #贪难匹配,按最多的匹配 # 结论:* =={0,+无穷} + == {1,+无穷} ?== {0,1} # [] 字符集 ret = re.findall(‘a[c,d,e,s,]x‘,‘asx‘) #是 or 意思 print(ret) ret = re.findall(‘[a-z]‘,‘asx‘) # - 表示范围 print(ret) # 注意 [] 字符集 :取消元字符的作用、 ( \ ^ - )这三个除外 ret = re.findall(‘[w,,]‘,‘awdx*,‘) # *变为普通字符 print(ret) ret = re.findall(‘[^a]‘,‘awdx*,‘) # ^ 取补集 即为除 a 的元素 print(ret) ret = re.findall(‘[^a,w]‘,‘awdx*,‘) # [] 中的全部元素非 包括, print(ret) #[‘d‘, ‘x‘, ‘*‘] # \ 斜杠 #斜杠后的元字符 去除特殊功能 #斜杠后的一些普通字符实现特殊功能 # \d 表示数字 [0,9] print(re.findall(‘\d{11}‘,‘hqfuhi8712648721485‘)) #匹配11个数字 # [‘87126487214‘] # \D 表示[^0=9] print(re.findall(‘\D{5}‘,‘hqfuhi8712648721485‘)) #匹配5个字符 # # [‘hqfuh‘] # # \s 表示任意空字符] print(re.findall(‘\s‘,‘hqfu\thi87 1264\r8721485‘)) # # [‘\t‘, ‘ ‘, ‘\r‘] # # \S 表示任意非空字符] print(re.findall(‘\S‘,‘hqfu\thi87 1264\r8721485‘)) # [‘h‘, ‘q‘, ‘f‘, ‘u‘, ‘h‘, ‘i‘, ‘8‘, ‘7‘, ‘1‘, ‘2‘, ‘6‘, ‘4‘, ‘8‘, ‘7‘, ‘2‘, # \w 表示任意数字 字母 字符] # \W 表示任意非数字 字母 字符] # \b 表示特殊字符的边界 print(re.findall(r‘\bi‘,‘hello i an duke‘)) #\+ ret = re.search(‘a+‘,‘aaawdx*,‘) # print(ret.group()) #aaa ret = re.search(‘a\+‘,‘aaawdx*,‘) # print(ret) #None # 两种方法解决标红 ret = re.findall(r‘\\‘,‘aaawdxD:\c‘) # print(ret) #[‘\\‘] ret = re.findall(‘\\\\‘,‘aaawdxD:\c‘) # print(ret) #[‘\\‘] # 用结果理解 ret = re.search(r‘\bduke‘,‘duke‘) # r表示原生字符串 print(ret.group()) #duke ret = re.search(‘\bduke‘,‘duke‘) # r表示原生字符串 print(ret) #None # ()做分组 | print(re.search(‘(as)+‘,‘sdjkasf‘).group()) #as print(re.search(‘(as+)‘,‘sdjkasf‘).group()) #as print(re.search(‘(as)|3‘,‘sdj3kas3f3‘).group()) #整体或 print(re.findall(‘(as)|3‘,‘sdj3kas3f3‘) ) #[‘‘, ‘as‘, ‘‘, ‘‘] # #用于文件路径 ret = re.search(‘(?P<id>\d{3})/(?P<name>\w{3})‘,‘dghwwweeejyaf123/ooo‘) print(ret.group()) print(ret.group(‘id‘)) print(ret.group(‘name‘)) # 二:re 的方法 #findall() :返回全部的结果,以list的形势 # re.search() :返回一个对象 ,对象通过 group方法返回结果 # re.match() 只在字符串开始开始匹配 ,返回的也是一个对象 group # re.split() : print(re.split(‘[k,s]‘,‘dukehsijik‘)) #这个很重要 print(re.split(‘[k,s]‘,‘dskehsijik‘)) #注意这个的分法 #sub() 替换 print(re.sub(‘d..e‘,‘haha‘,‘jiewjfrewdukeshjs‘)) principle= re.compile(‘d..e‘) #编译规则 ret = principle.findall(‘iewjfrewdukeshjs‘) print(ret) #[‘duke‘]