代码:
1 # 导入正则表达式的包 2 import re 3 4 5 6 def main(): 7 # re.match(正则表达式,要匹配的字符串) 从头匹配 8 # 如果要匹配的字符串有".","*","+" 这种正则表达式有的符号,则需要用\转义 9 ret = re.match(r"[a-zA-Z0-9][a-zA-Z0-9_]{4,20}@(163|126)\.com$","laowang@126.com") 10 if ret: 11 print("----match匹配----") 12 # group()取出匹配到的值 13 print(ret.group()) 14 15 # 分组 16 str = "<body><h1>hahahaha</h1></body>" 17 # 把需要分组的用括号括起来,第几对括号就是第几组,可以用\数字来表示第几组 18 ret = re.match(r"<(\w*)><(\w*)>.*</\2></\1>",str) 19 if ret: 20 print("----分组----") 21 print(ret.group()) 22 23 # 起别名-----分组很多的时候用 24 # (?P<name>正则表达式) (?P=name) P字母大写 25 ret = re.match(r"<(?P<body>\w*)><(?P<h1>\w*)>.*</(?P=h1)></(?P=body)>",str) 26 if ret: 27 print("----起别名----") 28 print(ret.group()) 29 30 # search(正则表达式,要匹配的字符串) 查找匹配 只匹配一次 找到就停 31 ret = re.search(r"\d+","阅读次数为9999,点赞量:100") 32 if ret: 33 print("----search查询匹配") 34 # 只匹配一次 只会显示阅读次数 9999 而点赞数不会被匹配 35 print(ret.group()) 36 37 # findall(表达式,要匹配的字符串) 查询所有符合的字段 以列表的形式返回 38 ret = re.findall(r"\d+","python=9999,c=322,c++=132123") 39 if ret: 40 print("----findall查询所有") 41 # 注意:此处用ret输出 group不能返回列表 42 print(ret) 43 44 # 替换 sub(表达式,替换的值/函数的引用,需要被替换的字符串) 45 ret = re.sub(r"</*\w+>", "", str) 46 if ret: 47 print("----sub替换-----") 48 # 去除html标签 49 print(ret) 50 # 切割 split(表达式,要匹配的字符串) 根据匹配进行切割字符串 并返回一个列表 51 ret = re.split(r":| ","内容:失恋 33 天") 52 if ret: 53 print("----split替换----") 54 print(ret) 55 56 57 58 59 if __name__ == '__main__': 60 main()
结果:
----match匹配---- laowang@126.com ----分组---- <body><h1>hahahaha</h1></body> ----起别名---- <body><h1>hahahaha</h1></body> ----search查询匹配 9999 ----findall查询所有 ['9999', '322', '132123'] ----sub替换----- hahahaha ----split替换---- ['内容', '失恋', '33', '天']