2021-11-14 正则表达式使用

  1. 使用正则表达式,拆解年月日
# encoding=utf-8
import re
'''用户输入一串日期,可能是以空格、横线等作为年月日的分割,需要将其输入的年月日分别提取出来'''
def dateSplit(date):
    #将用户输入的date先用正则表达式拆解,将非数字的部分删除。使用re.sub(),使用"" 来替换非数字部分.r' 用以忽略转义
    date1=re.sub(r'\D',"",date)
    # print(date1)
    if(len(date1)!=8):
        print("请输入正确的日期格式,数字部分保证8位。")
        exit()
    # 将获取到的date1做分组拆分.?P 用以表示分组,规则为:组名year, 数字4位;compile 是定义一个正则表达式
    p=re.compile(r'(?P<year>\d{4})(?P<month>\d{2})(?P<day>\d{2})')
    # match 从头开始匹配,匹配上就返回位置。groupdict() 是将上面的分组以字典形式返回
    d=p.match(date1).groupdict()
    print("您输入的日期为:"+d['year']+"年"+d['month']+"月"+d['day']+"日")

date=input("请输入年月日:") # input 输入的类型是str
dateSplit(date)

  1. 匹配0-999任意数字
#encoding=utf-8
import re
'''输入一个数字,判断是否在0-999之间,如果用户输入以0开头,需要将0 去掉'''
def numMatch(n):
    #将用户输入的非数字(如空格去掉)
    n0=re.sub(r'\D',"",n)
    p=re.compile(r'^\d{1,3}$')  #开头结尾,数字1-3位
    # 正则表达式匹配的是str类型,所以不要想着直接转成int再判断
    # 若输入一串0,则认为是0, 开头结尾匹配
    p1=re.compile(r'^[0]*$')
    if(p1.match(n0)):
        n1='0'
    else:
        # 如果以0开头,先将0去掉,开头的多个0全部去掉, 开头使用^.
        n1=re.sub('^[0]*',"",n0)
    print(n1)
    if(p.match(n1))!=None:
        print("您所输入的数字"+n+"在0-999之间")
    else:
        print("您所输入的数字"+n+"不在0-999之间,请重新输入")

n=input("请输入一个数字:\n")
numMatch(n)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AsiaFT.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值