正则表达式

代码:

 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', '天']

  

原文地址:https://www.cnblogs.com/yifengs/p/11401916.html