#coding=utf-8
# 导?re模块
import re
# 使?match?法进?匹配操作
result = re.match(正则表达式,要匹配的字符串)
# 如果上?步匹配到数据的话,可以使?group?法来提取数据
result.group()
二.
三.
示例1*
1 #coding=utf-8
2 import re
3 ret = re.match("[A-Z][a-z]*","M")
4 print(ret.group())
5 ret = re.match("[A-Z][a-z]*","MnnM")
6 print(ret.group())
7 ret = re.match("[A-Z][a-z]*","Aabcdef")
8 print(ret.group())
9 运?结果:
10 M
11 python?级
12 匹配多个字符 14
13 Mnn
14 Aabcdef
1 #coding=utf-8
2 import re
3 names = ["name1", "_name", "2_name", "__name__"]
4 for name in names:
5 ret = re.match("[a-zA-Z_]+[\w]*",name)
6 if ret:
7 print("变量名 %s 符合要求" % ret.group())
8 else:
9 print("变量名 %s ?法" % name)
10
11 运?结果:
12 变量名 name1 符合要求
13 变量名 _name 符合要求
14 变量名 2_name ?法
15 变量名 __name__ 符合要求
1 #coding=utf-8
2 import re
3 ret = re.match("[1-9]?[0-9]","7")
4 python?级
5 匹配多个字符 15
6 print(ret.group())
7 ret = re.match("[1-9]?\d","33")
8 print(ret.group())
9 ret = re.match("[1-9]?\d","09")
10 print(ret.group())
11
12 运?结果:
13 7
14 33
15 0 # 这个结果并不是想要的,利?$才能解决
1 #coding=utf-8
2 import re
3 ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678")
4 print(ret.group())
5 ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66")
6 print(ret.group())
7
8 运?结果:
9 12a3g4
10 1ad12f23s34455ff66
四.
1 #coding=utf-8
2 import re
3 email_list = ["xiaoWang@163.com", "xiaoWang@163.comheihei",]
4 for email in email_list:
5 ret = re.match("[\w]{4,20}@163\.com$", email)
6 if ret:
7 print("%s 是符合规定的邮件地址,匹配后的结果是:%s" % (email, ret.group()))
8 else:
9 print("%s 不符合要求" % email)
10
11
12 运?结果:
13 xiaoWang@163.com 是符合规定的邮件地址,匹配后的结果是:xiaoWang@163.com
14 xiaoWang@163.comheihei 是符合规定的邮件地址,匹配后的结果是:xiaoWang@163.co.com.xiaowang@qq.com 不符合要求
五.
1 #coding=utf-8
2 import re
3 ret = re.match("[1-9]?\d","8")
4 print(ret.group()) # 8
5 ret = re.match("[1-9]?\d","78")
6 print(ret.group()) # 78
7 # 不正确的情况
8 ret = re.match("[1-9]?\d","08")
9 print(ret.group()) # 0
10 # 修正之后的
11 ret = re.match("[1-9]?\d$","08")
12 if ret:
13 print(ret.group())
14 else:
15 print("不在0-100之间")
16 # 添加|
17 ret = re.match("[1-9]?\d$|100","8")
18 print(ret.group()) # ret = re.match("[1-9]?\d$|100","78")
19 print(ret.group()) # 78
20 ret = re.match("[1-9]?\d$|100","08")
21 # print(ret.group()) # 不是0-100之间
22 ret = re.match("[1-9]?\d$|100","100")
23 print(ret.group()) # 100
示例2:
不是以4、7结尾的?机号码(11位)
1 import re
2 tels = ["13100001234", "18912344321", "10086", "18800007777"]
3 for tel in tels:
4 ret = re.match("1\d{9}[0-35-68-9]", tel)
5 if ret:
6 print(ret.group())
7 else:
8 print("%s 不是想要的?机号" % tel)
1 >>> ret = re.match("([^-]*)-(\d+)","010-12345678") #[^-]的意思是非-
2 >>> ret.group()
3 ‘010-12345678‘
4 >>> ret.group(1)
5 ‘010‘
6 >>> ret.group(2)
7 ‘12345678‘
1 #coding=utf-8
2 import re
3 # 能够完成对正确的字符串的匹配
4 ret = re.match("<[a-zA-Z]*>\w*</[a-zA-Z]*>", "<html>hh</html>")
5 print(ret.group())
6 # 如果遇到?正常的html格式字符串,匹配出错
7 ret = re.match("<[a-zA-Z]*>\w*</[a-zA-Z]*>", "<html>hh</htmlbalabala>")
8 print(ret.group())
9 # 正确的理解思路:如果在第?对<>中是什么,按理说在后?的那对<>中就应该是什么
10 # 通过引?分组中匹配到的数据即可,但是要注意是元字符串,即类似 r""这种格式
11 ret = re.match(r"<([a-zA-Z]*)>\w*</\1>", "<html>hh</html>")
12 print(ret.group())
13 # 因为2对<>中的数据不?致,所以没有匹配出来
14 test_label = "<html>hh</htmlbalabala>"
15 ret = re.match(r"<([a-zA-Z]*)>\w*</\1>", test_label)
16 if ret:
17 print(ret.group())
18 else:
19 print("%s 这是?对不正确的标签" % test_label)
20
21 运?结果:
22 <html>hh</html>
23 <html>hh</htmlbalabala>
24 <html>hh</html>
25 <html>hh</htmlbalabala> 这是?对不正确的标签
1 #coding=utf-8
2 import re
3 labels = ["<html><h1>www.itcast.cn</h1></html>",<html><h1>www.itcast.cn</h2></html>"]
4 for label in labels:
5 ret = re.match(r"<(\w*)><(\w*)>.*</\2></\1>", label)
6 if ret:
7 print("%s 是符合要求的标签" % ret.group())
8 else:
9 print("%s 不符合要求" % label)
10
11 运?结果:
12 <html><h1>www.itcast.cn</h1></html> 是符合要求的标签
13 <html><h1>www.itcast.cn</h2></html> 不符合要求
1 #coding=utf-8
2 import re
3 ret = re.match(r"<(?P<name1>\w*)><(?P<name2>\w*)>.*</(?P=name2)></(?P=name1)>","<html><h1>www.itcast.cn</h1></html>")
4 ret.group()
5 ret = re.match(r"<(?P<name1>\w*)><(?P<name2>\w*)>.*</(?P=name2)></(?P=name1)>","<html><h1>www.itcast.cn</h1></html>")
6 ret.group()
1 #coding=utf-8
2 import re
3 ret = re.search(r"\d+", "阅读次数为 9999")
4 ret.group()
5
6 运?结果:
7 ‘9999‘
1 #coding=utf-8
2 import re
3 ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")
4 print(ret)
5
6 运?结果:
7 [‘9999‘, ‘7890‘, ‘12345‘
1 ?法1:
2 #coding=utf-8
3 import re
4 ret = re.sub(r"\d+", ‘998‘, "python = 997")
5 print(ret)
6
7 运?结果:
8 python = 998
9
10 ?法2:
11 #coding=utf-8
12 import re
13 def add(temp):
14 strNum = temp.group()
15 num = int(strNum) + 1
16 return str(num)
17 ret = re.sub(r"\d+", add, "python = 997")
18 print(ret)
19 ret = re.sub(r"\d+", add, "python = 99")
20 print(ret)
21
22 运?结果:
23 python = 998
24 python = 100
练习
练习1.从下?的字符串中取出?本
<div>
<p>岗位职责:</p>
<p>完成推荐算法、数据统计、接?、后台等服务器端相关?作</p>
<p><br></p>
<p>必备要求:</p>
<p>良好的?我驱动?和职业素养,?作积极主动、结果导向</p>
<p> <br></p>
<p>技术要求:</p>
<p>1、?年以上 Python 开发经验,掌握?向对象分析和设计,了解设计模式</p>
<p>2、掌握HTTP协议,熟悉MVC、MVVM等概念以及相关WEB开发框架</p>
<p>3、掌握关系数据库开发设计,掌握 SQL,熟练使? MySQL/PostgreSQL 中的?种
<p>4、掌握NoSQL、MQ,熟练使?对应技术解决?案</p>
<p>5、熟悉 Javascript/CSS/HTML5,JQuery、React、Vue.js</p>
<p> <br></p>
<p>加分项:</p>
<p>?数据,数理统计,机器学习,sklearn,?性能,?并发。</p>
</div>
参考答案:
re.sub(r"<[^>]*>| |\n", "", test_str)
练习2.split 根据匹配进?切割字符串,并返回?个列表
需求:切割字符串“info:xiaoZhang 33 shandong”
#coding=utf-8
import re
ret = re.split(r":| ","info:xiaoZhang 33 shandong")
print(ret)
运?结果:
[‘info‘, ‘xiaoZhang‘, ‘33‘, ‘shandong‘]
原文:https://www.cnblogs.com/talosant/p/11343627.html