Python语言(实践)练习题——正则表达式应用

(1)判断一个给定的字符串是否全是一个正浮点数。

import re
while True:
    a = input("请输入任意字符串:")
    b = "^[1,9]\d*\.\d*$|0\.\d*[1,9]\d*$"
    c = re.match(b,a)
    if c is None:
        print("不是正浮点数")
    else:
        print("是正浮点数")
#若不是一定要用正则表达式,那这样应该也还不错
while True:
    try:
        a = float(input("请输入任意字符串:"))
        if a > 0:
            print("是正浮点数")
        else:
            print("不是正浮点数")
    except ValueError:
        print("不是正浮点数")

(2)验证一个给定的字符串是否为合法的密码,规则:长度8-12位,由大、小写字母、数字构成,且必须包含大、小写字母和数字。

import re
while True:
    a = input("请输入想要设定的密码:")
    b = "^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{8,12}$"
    c = re.match(b,a)
    if c is None:
        print(a,"不合规")
    else:
        print(a,"合规")

(3)判断一个给定的字符串是否为末尾为两个数字重复的手机号码(靓号)。

import re
while True:
    a = input("请输入手机号:")
    b = "^\d{11}"
    c = re.match(b,a)
    if c is None:
        print("请输入一个11位手机号类似05373423299或13764756398")
    else:
        d = "^[0-9]{9}(00|11|22|33|44|55|66|77|88|99)$"
        e = re.search(d,a)
        if e is None:
            print("不是靓号")
        else:
            print("是靓号")

(4)判断一个给定的字符串是否是一个身份证号码。
提示:身份证号码规则:前1、2位数字表示:所在省份的代码;第3、4位数字表示:所在城市的代码;第5、6位数字表示:所在区县的代码;第7-14位数字表示:出生年、月、日;第15、16位数字表示:所在地的派出所的代码;第17位数字表示性别:奇数表示男性,偶数表示女性;第18位数字是校检码。)

f = open("D:/Desktop/sfzdqh.txt","r+")
list_line = []
for i in range(1,3036):
    line0 = f.readline()
    line = line0[0:5]
    list_line.append(line)
str_line = "|".join(list_line)
print(str_line)
f.close()
#这是一个分行写有全部地区号的文件
#这里是预先的准备好所有地区号转化为符合正则表达式的格式
#之所以没和上一个写在一起,是因为写入str实在太慢了,单独先处理好再说吧
import re
while True:
    a = input("请输入字符串:")
    b = "^(" + str_line + ")[1-9]\d*3((010[1-9]|01[1-2]\d|013[0-1])|(020[1-9]|022[0,9])|(030[1-9]|03[1-2]\d|033[0-1])|(040[1-9]|04[1-2]\d|0430)|(050[1-9]|05[1-2]\d|053[0-1])|(060[1-9]|06[1-2]\d|0630)|(070[1-9]|07[1-2]\d|073[0-1])|(080[1-9]|08[1-2]\d|083[0-1])|(090[1-9]|09[1-2]\d|0930)|(100[1-9]|10[1-2]\d|103[0-1])|(110[1-9]|11[1-2]\d|1130)|(120[1-9]|12[1-2]\d|123[0-1]))\d{3}(\d|X)$"
    c = re.match(b,a)
    if c is None:
        print("不是")
    else:
        print("是")  #尽力了,这个匹配别所有地区号(前六位),正确的月(十二个月)对应正确的天数(每个月允许的正确日期号)(平年闰年实在是不能考虑了),以及识别符的X

(5)判断一个给定的字符串是否是一个武汉大学官方的URL地址。

import re
while True:
    a = input("请输入URL地址:")
    b = r"^(http:|https:)/{2}([0-9a-z]*\.)*(whu)\.(edu)\.(cn)/[a-z]*"
    c = re.match(b,a)
    if c is None:
        print("不是")
    else:
        print("是")

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

山河之书Liu_Zixin

不要打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值