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())# “|”管道符,或的意思,匹配前一组或后一组 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"))# 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"))