Python正则表达式匹配0~100的数字

使用正则匹配

  • 使用正则表达式匹配出0~100的数字
    首先我们需要明白0~100数字出现的情况:
    可能会出现0 、一位数字、两位数字、还有100

所以先写一个这样的规则:

import re
res=re.match(r'[1-9]\d?$|0$|100$','100')
print(res.group())

我们这样分析:
首先抛去0,我们出现的第一位可能是1-9的任意数字所以匹配规则[1-9],1-9出现的次数呢?我们想一想,当出现两位数的时候,第一位的1-9是不是就只能出现一次(此时没考虑0),所以接下来考虑第二位:
第二位的话可能是11、12、34、60这类的数字,随意包含0,所以匹配的规则是\d,因为输入的数字是一位时,第二位就不出现,所以出现次数为0次或者一次,所以为?符号,接着匹配出两个特殊情况,0和100 用|来加进来,所以执行:

import re
res=re.match(r'[1-9]\d?$|0$|100$','100')
res1=re.match(r'[1-9]\d?$|0$|100$','1')
res2=re.match(r'[1-9]\d?$|0$|100$','15')
res3=re.match(r'[1-9]\d?$|0$|100$','0')
res4=re.match(r'[1-9]\d?$|0$|100$','80')
print(res.group())
print(res1.group())
print(res2.group())
print(res3.group())

在这里插入图片描述
因为match方法返回匹配对象(Match Object),所以就是通过group的方法来获取匹配的内容。

进行优化

将上面的匹配规则进行优化,将0考虑进去,也就是意味着第一个可能会出现0,所以将规则优化成:

import re
res4=re.match(r'[1-9]?\d?$|100$','0')
print(res4)

因为第一个可能出现0,所以将[1-9]加上?,出现0次或者一次,所以当0出现时,[1-9]就是出现0次,所以直接从后面的\d?开始匹配

这个是看那个黑马的视频的正则,讲的挺好的

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值