正则表达式(二)——进阶之匹配分组

本文深入讲解正则表达式的匹配分组,包括如何使用|匹配不同情况,(ab)创建分组, um引用分组内容,以及(?P<name>)和(?P=name)设置和引用别名。通过实例解析了在HTML内容提取和标签配对验证中的应用。
摘要由CSDN通过智能技术生成

基础部分在这里:正则表达式(一)——基础之匹配字符,数量,边界

这部分我将换种形式来讲述,结合实际问题需求来讲述。

3.匹配分组

字符 功能
| 匹配左右任意一个表达式
(ab) 将括号中的字符作为一个分组
\num 引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串

 

 

 

 

 

 

 

1)| 

需求:匹配出0-100之间的数字

分析:首先我们明确这之间的数字包含0,两位数,100,,也就是一位,两位,三位的可能都有,鉴于一位0,三位100都是单独数字,我们可以使用 | 来连接(相当于or),着重考虑一位数[1-9],两位数[10-99],分析其特征,这里第一位数必须为[1-9],第二位[0-9]都可以(\d可以表示),对于一位数[1-9]的第二位可以不出现(?可以表示),再加个结尾$,防止234匹配到23的情况。因此正则表达式为:

r'[1-9]\d?$|0$|100$'
>>> re.match(r'[1-9]\d?$|0$|100$','08')
None
>>> re.match(r'[1-9]\d?$|0$|100$','0')
<_sre.SRE_Match object; span=(0, 1), match='0'>
>>> re.match(r'[1-9]\d?$|0$|100$','100')
<_sre.SRE_Match object; span=(0, 3), match='100'>
>>> re.match(r'[1-9]\d?$|0$|100$','101')
None
>>> re.match(r'[1-9]\d?$|0$|100$','80')
<_sre.SRE_Match object; span=(0, 2), match='80'>

我们再看下0能不能不用 | ,也把它包含进去?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值