基础部分在这里:正则表达式(一)——基础之匹配字符,数量,边界
这部分我将换种形式来讲述,结合实际问题需求来讲述。
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能不能不用 | ,也把它包含进去?