正则表达式re模块
import re # 正则表达式中的元字符: # “.” 点通配符表示可以替换表达式中的任意字符,只能代指一个字符,除换行符外 print(re.findall("a..", "hdhgaqwe")) # “^”只从开始匹配 print(re.findall("^a..", "ahdhgaqwe")) # “$” 只从结尾匹配 print(re.findall("a..$", "ahdhgawe")) # “*” 重复匹配【0-无穷】 print(re.findall("a*bc", "ahdhgaabcqwbce")) # “+” 重复匹配【1-无穷】 print(re.findall("a+bc", "ahdhgaabcqwbce")) # “?”匹配0个或一个字符 print(re.findall("a?b", "ahdhgaabcqwbce")) # “{}” 表示重复多少次字符 print(re.findall("a{2}b", "ahdhgaabcqwbce")) print(re.findall("a{1,3}b", "ahdhgaaabcqwbce")) # “[]” 字符集,表示满足字符集中任意一个字符都可以,不可以满足多个字符,还可以取消元字符的特殊意义但这些不取消(| ^ -),^放在字符集中是取反的意思 print(re.findall("[a-z,0-9]b", "ahdhgaabcqw12ebc1be")) # “\” 反斜杠后边跟元字符去除特殊功能,反斜杠后边跟普通字符实现特殊功能 # '\A' 只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的 # '\Z' 匹配字符结尾,同$ # '\d' 匹配数字0-9 # '\D' 匹配非数字 # '\w' 匹配[A-Za-z0-9] # '\W' 匹配非[A-Za-z0-9] # 's' 匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t' print(re.findall("b\*", "ahdhgaab*cqwbce")) print(re.findall("b\d", "ahdhgaab*cqwb12ce")) # “()” 分组,匹配一组数据,把括号里面的内容当一组使用 print(re.search("(ab)+", "ahdhgababcqwabbce").group()) # findall优先取组中的内容:['baidu'] print(re.findall("www.(\w+).com", "www.baidu.com")) # ?:可以取消优先组的内容展示全部内容 print(re.findall("www.(?:\w+).com", "www.baidu.com")) # “|”管道符,或的意思,匹配前一组或后一组 print(re.search("Ab| ab", "Abahdhgabcqwbbce").group()) # ?P<name> 名称的固定格式,可以根据名称取具体值 ret = re.search("(?P<name>[a-z]{3})(?P<age>[0-9]{2})", "1a2aabc123") print(ret.group()) print(ret.group("name")) print(ret.group("age")) # 正则表达式中常用的方法 # findall 全匹配,只要字符串中匹配出来的都在列表中展示 print(re.findall("a..b", "ashbshhaccbd")) # finditer 把匹配出来的数据做成迭代器,可以通过next取取值 ret = re.finditer("\d", "abcgg6782j8") print(next(ret).group()) # search匹配出一个后保存到对象中,可以通过group调用获取具体值 print(re.search("a..b", "ashbshhaccbd").group()) # match中从开始位置匹配字符串,也保存为对象,可以通过group调用获取具体值 print(re.match("a..b", "ashbshhaccbd").group()) # split以匹配到的字符进行分组 print(re.split("[h,c]", "ashbshaccbd")) # sub把匹配到的字符进行替换 print(re.sub("h.", "vvvv", "ashbshaccbd")) print(re.sub("h.", "vvvv", "ashbshaccbd", 1)) # 会告诉替换了的次数 print(re.subn("h.", "vvvv", "ashbshaccbd")) # compile把正则条件编译成对象,后续可以直接调用 mat = re.compile("a..") print(mat.findall("ashbshaccbd"))