#re模块(正则表达式):用作模糊匹配 # 分为两种:①元字符:".","^","$","*","+","?","{}","[]","|","()","" # ②普通字符 import re #通配符"."(除n以外所有字符都可匹配) print(re.findall('a.c','abcabcabcadcadcabbbc')) #['abc', 'abc', 'abc', 'adc', 'adc'] #"^"(开头匹配) print(re.findall('^a..','abcddaccd')) #['abc'] #"$"(结尾匹配) print(re.findall('a..d$','abcdabcdaacad')) #['acad'] #"*"(匹配[0,+oo)次) # print(re.findall('*abcd','abcd')) #放在开头会报错 print(re.findall('abcd*','abcdddabcaabcdbabc')) #['abcddd', 'abc', 'abcd', 'abc'] #"+"(匹配(1,+oo)次) # print(re.findall('+abcd','abcdabcaabcdbabc')) #同上 print(re.findall('abcd+','abcdddabcaabcdbabc')) #['abcddd', 'abcd'] #"?"(匹配0次或1次) # print(re.findall('?abcd','abcdddabcaabcdbabc')) #报错 print(re.findall('abcd?','abcdddabcaabcdbabc')) #['abcd', 'abc', 'abcd', 'abc'] #"{}" print(re.findall('abc{3}','abcabcccabcccd')) #c需要重复三次,['abccc', 'abccc'] print(re.findall('abc{1,6}','abcabccabcccabccccd')) #c重复1,2,3,4,5,6次都可以,['abc', 'abcc', 'abccc', 'abcccc'] print(re.findall('abc{0,}','abcababcccd')) #相当于"*",['abc', 'ab', 'abccc'] print(re.findall('abc{1,}','ababcabccabccd')) #相当于"+",['abc', 'abcc', 'abcc'] print(re.findall('abc{0,1}','aabcabbccabccd')) #相当于"?",['ab', 'abc', 'abc', 'abc'] #"*","+","?","{}"都是贪婪匹配,在后边加上"?"变成惰性匹配 print(re.findall('abc*?','ababcabccabccd')) #['ab', 'ab', 'ab', 'ab'] print(re.findall('abc+?','ababcabccabccd')) #['abc', 'abc', 'abc'] print(re.findall('abc??','ababcabccabccd')) #['ab', 'ab', 'ab', 'ab'] print(re.findall('abc{1,3}?','ababcabccabccd')) #['abc', 'abc', 'abc'] #字符集"[]"(表示或者),"^"在这里表示非,"-"表示范围 print(re.findall('[abc]','abc')) #['a', 'b', 'c'] print(re.findall('a[a-z]','ababcabcab')) #['ab', 'ab', 'ab', 'ab'] print(re.findall('a[a-z]*','abcadded123')) #['abcadded'] print(re.findall('a[^a-z]*','a123abc')) #['a123', 'a'] #转义符""(将有特殊功能的变为普通字符,将普通字符变成有功能的字符 # d匹配任何十进制数字 # D匹配任何非数字字符 # s匹配任何空白字符 # S匹配任何非空白字符 # w匹配任何字母数字字符 # W匹配任何非字母数字字符 # b匹配一个特殊字符边界,比如空格、&,#等 print(re.findall('d','abc123')) #['1', '2', '3'] print(re.findall('\d','abc123')) #[] print(re.findall('D','abc123##')) #['a', 'b', 'c', '#', '#'] print(re.findall('D*','abc123##')) #['abc', '', '', '', '##', ''] #管道符"|",表示或 print(re.findall('xa|b','xaddxbxab')) #['xa', 'b', 'xa', 'b'] print(re.findall('x[ab]','xaddxbxab')) #['xa', 'xb', 'xa'] #分组"()" print(re.findall('(ad)','adadabcd')) #['ad', 'ad'] print(re.findall('(jq)|(dwj)','abcjqdwjabc')) #[('jq', ''), ('', 'dwj')] #re模块中的常用方法 #返回满足条件的所有结果,放在列表中返回 print(re.findall('abc','abcabcabc')) #['abc', 'abc', 'abc'] #匹配到第一个就返回,返回字符串,搭配group()方法 print(re.search('abc','abcabcabc')) #print(re.search('abc','abcabcabc').group()) #abc #从字符串开头开始匹配,遇到第一个就返回 print(re.match('abc','abcabcabc')) # print(re.match('abc','abcabcabc').group()) #abc #分割 print(re.split('a','abcadef')) #['', 'bc', 'def'] #先按照a分割,再按照d分割 print(re.split('a','abdcdasdfh')) #['', 'bdcd', 'sdfh'] print(re.split('[ad]','abdcdasdfh')) #['', 'b', 'c', '', 's', 'fh'] #三个参数,将前者替换为后者 print(re.sub('d+','A','abc123dd45')) #abcAddA print(re.sub('d','A','abc123dd45')) #abcAAAddAA #四个参数,第四个参数表示前三个替换 print(re.sub('d','A','abc123dd45',3)) #abcAAAdd45 #返回结果替换了几次 print(re.subn('d','A','abc123dd45')) #('abcAAAddAA', 5) #定制匹配规则,方便使用 print(re.compile('d+').findall('abc123def456')) #['123', '456'] #按照规则取出元素放到一个迭代器中 ret = re.finditer('d','abc123456') print(ret) # print(next(ret).group()) #1 print(next(ret).group()) #2 #()具有优先级,里边的内容优先匹配出来 print(re.findall('www.(baidu|163).com','www.baidu.com')) #['baidu'] #?:--->去除优先级 print(re.findall('www.(?:baidu|163).com','www.baidu.com')) #['www.baidu.com']
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)