- 定义:re模块称为正则表达式;
- 作用:创建一个"规则表达式",用于验证和查找符合规则的文本,广泛用于各种搜索引擎、账户密码的验证等;
- 预定义字符
\d 匹配所有的十进制数字 0-9
\D 匹配所有的非数字,包含下划线
\s 匹配所有空白字符(空格、TAB等)
\S 匹配所有非空白字符,包含下划线
\w 匹配所有字母、汉字、数字 a-z A-Z 0-9
\W 匹配所有非字母、汉字、数字,包含下划线
1、$:匹配一行的结尾(必须放在正则表达式最后面)
2、^:匹配一行的开头(必须放在正则表达式最前面)
3、*:前面的字符可以出现0次或多次(0~无限)
4、+:前面的字符可以出现1次或多次(1~无限)
5、?:变"贪婪模式"为"勉强模式",前面的字符可以出现0次或1次
6、.:匹配除了换行符"\n"之外的任意单个字符
7、|:两项都进行匹配
8、[ ]:代表一个集合,有如下三种情况
[abc]:能匹配其中的单个字符
[a-z0-9]:能匹配指定范围的字符,可取反(在最前面加入^)
[2-9] [1-3]:能够做组合匹配
9、{ }:用于标记前面的字符出现的频率,有如下情况:
{n,m}:代表前面字符最少出现n次,最多出现m次
{n,}:代表前面字符最少出现n次,最多不受限制
{,m}:代表前面字符最多出现n次,最少不受限制
{n}:前面的字符必须出现n次
s = '我的电话是:10086,女朋友的电话是:10010'
ret1 = re.findall('\d+',s)
print(ret1)
ret2 = re.finditer('\d+',s)
print(ret2)
for i in ret2:
print(i.group())
ret3 = re.search('\d+',s)
print(ret3.group())
ret4 = re.match('\d+',s)
print(ret4)
ret5 = re.sub('x.l','xxx','sdakofasldxwlfasfj')
print(ret5)
res = """
<div class='jay'><span id='1'>周杰伦</span></div>
<div class='ldh'><span id='2'>刘德华</span></div>
<div class='zxy'><span id='3'>张学友</span></div>
<div class='hsbd'><span id='4'>胡说八道</span></div>
"""
obj = re.compile(r"<div class='.*?'><span id='\d+'>.*?</span></div>",re.S)
result = obj.finditer(res)
for i in result:
print(i.group())
obj1 = re.compile(r"<div class='(?P<yname>.*?)'><span id='(?P<id>\d+)'>(?P<name>.*?)</span></div>",re.S)
result1 = obj1.finditer(res)
for it in result1:
print(it.group('name'))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)