常用函数: import re re.findall() :(正则,str)匹配str中所有符合正则的字符串并以列表返回 re.search() :(正则,str)匹配str中第一个符合规则的字符串返回结果集(没有则为None),用.group()取值(没有则报错) re.match() :(正则,str)开头匹配str中符合正则的字符串返回结果集(没有则为None),用.group()取值(没有则报错),可以直接用re.search(^正则,str)取代 re.finditer() :(正则,str)匹配str中所有符合正则的字符串并返回一个迭代器,迭代器元素为结果集,用.group()取值节约内存 re.compile() :(正则)编译正则表达式,返回值可以多次使用,上述匹配规则函数均可使用:par=re.compile("[1-9]{10}");par.findall(str)节省时间 re.sub() :(正则,newStr,str,count)匹配str中符合正则的count个字符串并用newStr替换,返回替换后的字符串 re.subn() :(正则,newStr,str)匹配str中符合正则的字符串并用newStr替换,返回替换后的字符串和个数组成的元组 re.split() :(正则,str)匹配str中符合正则的字符串并以此分割成列表 分组优先显示:()[取消分组优先直接在()前边加上(?: )即可] findall中: par=re.compile(">.*<") ret=par.findall(r"<h1>hahaha<h1>") print(ret) # ['>hahaha<'] par=re.compile(">(.*)<") ret=par.findall(r"<h1>hahaha<h1>") print(ret) #['hahaha'] split()中: ret=re.split("d+","23nihao34kili2290") print(ret) # ['', 'nihao', 'kili', ''] et=par.split("(d+)","23nihao34kili2290") print(ret) # ['', '23', 'nihao', '34', 'kili', '2290', ''] search()中(不受影响,但可以分组命名或按索引取值(从1开始)): ret = re.search(r'<w+>w+<\w+>',r'<title>qqxing< itle>') 分组不影响: ret = re.search(r'<(w+)>(w+)<\(w+)>',r'<title>qqxing< itle>') print(ret.group(0)) # <title>qqxing< itle>不受到分组的影响默认为 print(ret.group(1)) #title print(ret.group(2)) #qqxing 分组命名: ret = re.search(r'<(?P<ti>w+)>(?P<content>w+)<\(w+)>',r'<title>qqxing< itle>') print(ret.group()) print(ret.group("ti"))#title print(ret.group("content")) #qqxing 分组命名并引用: ret = re.search('<(?P<tag>w+)>.*</(?P=tag)>','<h1>wahaha</h2></h1></h3>') print(ret.group()) #<h1>wahaha</h2></h1>