Day 13 - 正则表达式习题

2023-11-16

利用正则表达式完成下面的操作:

1.用户名匹配

​ 要求: 1.用户名只能包含数字 字母 下划线

​ 2.不能以数字开头

​ 3.⻓度在 6 到 16 位范围内

re_username = re.compile(r'[a-zA-Z_]\w{5,15}')

print(re_username.fullmatch('a123bn_12'))          # <re.Match object; span=(0, 9), match='a123bn_12'>
print(re_username.fullmatch('1a123bn'))            # None
print(re_username.fullmatch('a123b'))              # None
print(re_username.fullmatch('a123bn_2udfusf4wg'))  # None
  1. 密码匹配

​ 要求: 1.不能包含!@#¥%^&*这些特殊符号

​ 2.必须以字母开头

​ 3.⻓度在 6 到 12 位范围内

re_password = re.compile(r'[a-zA-Z][^!@#¥%^&*]{5,11}')

print(re_password.fullmatch('ajsdsdfjdf%sdjk'))
  1. ipv4 格式的 ip 地址匹配
    提示: IP地址的范围是 0.0.0.0 - 255.255.255.255
# 正则方法一:
'''
0:0
1-19,100-199:1[0-9]{,2}
2,2-29:2[0-9]?
200-249:2[0-4][0-9]
250-255:25[0-5]
'''
re_ip1 = re.compile(r'((0|1[0-9]{,2}|2[0-9]?|2[0-4][0-9]|25[0-5])\.){3}(0|1[0-9]{,2}|2[0-9]?|2[0-4][0-9]|25[0-5])')

# 正则方法二:
'''
0-99:[1-9]?\d
100-199:1\d\d
200-249:2[0-4]\d
250-255:25[0-5]
'''
re_ip2 = re.compile(r'((([1-9]?\d)|(1\d\d)|(2[0-4]\d)|(25[0-5]))\.){3}(([1-9]?\d)|(1\d\d)|(2[0-4]\d)|(25[0-5]))')

print(re_ip1.fullmatch('2.123.12.25'))
print(re_ip2.fullmatch('12.13.2.215'))


# 字符串方法:
ip = '102.192.01.99'
nums = ip.split('.')
if len(nums) != 4:
    print('False')
else:
    for x in nums:
        if 0 <= int(x) <= 255:
            if len(x) != len(str(int(x))):
                print('False')
                break
        else:
            print('False')
            break
    else:
        print('True')
  1. 提取用户输入数据中的数值 (数值包括正负数 还包括整数和小数在内) 并求和
例如:“-3.14good87nice19bye” =====> -3.14 + 87 + 19 = 102.86
def n_sum(data: str):
    re_num = re.compile(r'[-+]?\d+\.?\d*')
    nums = re_num.findall(data)
    # print(nums)
    num_sum = 0
    for i in nums:
        # print(float(i))
        num_sum += float(i)
    print(num_sum)

n_sum('-3.14good87nice19bye')
  1. 验证输入内容只能是汉字
re_zh = re.compile(r'[\u4e00-\u9fa5]+')

print(re_zh.fullmatch('i认为撒回复'))
print(re_zh.fullmatch('认为撒回复'))
print(re_zh.fullmatch('认为=439sgdh撒回复'))
  1. 匹配整数或者小数(包括正数和负数)

    re_num = re.compile(r'[+-]?[1-9]+\d*|0\.\d+|[1-9]\d*\.\d+')
    
    print(re_num.fullmatch('12.3'))
    print(re_num.fullmatch('0.3'))
    print(re_num.fullmatch('12'))
    
  2. 使用正则表达式获取字符串中所有的日期信息 匹配年月日日期 格式:2018-12-6

    注意年的范围是1~9999, 月的范围是1~12, 日的范围是130或者131或者1~29(不考虑闰年)

re_date = re.compile(r'[1-9]\d{,3}-(([13578]|10|12)-(30|31|[1-2]\d|[1-9]))|(([469]|11)-(30|[1-2]\d|[1-9]))|(2-([1-9]|[1-2]\d))')

print(list(re_date.finditer('0218-1-0')))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Day 13 - 正则表达式习题 的相关文章

随机推荐

  • 如何使用远程仓库进行团队合作

    前言 如若我们的远程仓库又有了一名新的开发者 这时 新的开发者需要拉取远程仓库与其他开发者合作 文章目录 如何拉取远程仓库到本地仓库 git方法 clone远程分支 获取远程其他分支 Tortoise Git方法 clone远程分支 VS2
  • K8S部署前后端分离项目并支持Mysql和Redis数据持久化保存

    Springboot Vue Mysql Redis 文章目录 前端 1 default conf文件 2 创建Dockerfile 生成镜像 依赖nginx挂载配置文件 3 执行完以上步骤后 进行build tag push远程仓库 4
  • 软件质量管理-考试复习总结

    1 软件工程发展 软件开发的四大本质难题 不可见性 复杂性 一致性 可变性 除了不可见性以外 其他三个本质难题因项目而异 四大本质难题互动促进 可以缓解 但是不能彻底解决 软件危机 落后的软件生产方式无法满足迅速增长的计算机软件需求 从而导
  • cartographer-ros阅读梳理(一)数据接收部分

    一 前言 前段时间去忙了些杂活项目 调调代码测测算法 这几天闲下来准备硕士开题的事情 SLAM方面能开展的工作大家都大同小异 之前在梳理实验室程序的时候遇到一些阻碍 有一部分是引用的cartographer的东西 师兄把那部分的代码阉的千奇
  • upload-labs靶场-Pass-04关-思路以及过程

    开始前的小准备 upload labs靶场 是PHP环境运行的 所以我准备了一个PHP脚本和一张图片 图片好准备 PHP脚本如果不想写的话可以用我的这个获取当前时间的PHP脚本 还需要准备一个 htaccess下面的 脚本 是你上传文件的名
  • Python+Selenium- 环境搭建

    一 Selenium 简介 Selenium是目前最流行的web自动化测试工具 也常用于网络爬虫 已经更新到3以上的版本 1 组件 它提供了以下web自动化测试组件 Selenium IDE Firefox浏览器的一个插件 提供简单的脚本录
  • mysql 触发器 sql_mysql动态SQL的运用 (trigger、function、procedure)

    mysql中 当你在trigger function中编写动态的sql时 编译时就会出现 Error 1336 Dynamic SQL is not allowed in stored function or trigger trigger
  • Linq使用方法

    Linq是一种面向对象的查询方式 它和SQL语句及其类似 sql写法 select from 表 Linq写法 from n in 数据源 select n 为什么不跟sql写法一样将select一同写在语句的开头呢 主要是当时做IDE时考
  • elasticsearch安装部署和期间遇到的问题和解决

    因为工作需要用到elasticsearch 最近在测试环境部署单机版的elasticsearch服务 可以说是相当的波折 一个问题解决一个问题又来 都要吐血了已经 还好最终都得以解决 解决后那一刻真尼玛的爽啊啊啊 问题列表 elastics
  • 将本地项目上传到gitlab

    1 安装git https git scm com downloads 2 新建工程 3 创建密钥 a 桌面右键 b cd ssh 如果提示 No such file or directory 你可以手动的创建一个 ssh文件夹即可 mkd
  • 日本“性爱机器人”上线1小时被抢空

    来源 正商参阅 局座召忠 李开复 蒋东平网络等 日本 妻子 机器人被哄抢 不要房车不要彩礼 日本研发出一款 美女机器人 将其命名为 妻子 光看她的外形 你能识别出她其实只是一个机器人吗 60分钟售出万台 第一点就是人们所关注的价格方面 在日
  • node.js 环境安装(windows)

    准备需要安装的电脑 下载node js的安装包 地址 http nodejs cn download 下载的安装包双击打开 依次按照下图指示执行 下图点击接受 后下一步 下图 根据实际情况选择安装位置 如果记不住建议选择默认位置 直接点击n
  • 使用Python+VTK获取3D体渲染模型任意角度切面(更新中)

    目录 效果图 实现目标 安装依赖 Code 其他需求 效果图 废话少说先上效果图 右边红色的plane是想要获取3D模型对应切面的平面 左边是这个切面的切片的图像 实现目标 定义一个任意角度的切面 都能把体绘制模型的这个切面的图像获取 并且
  • LADRC的离散化实现(Mark一下,重新开始)

    LADRC的离散化实现 一 感慨 上一次写博客是两年前了 现在已经过了那么久 期间经历了许多事 有好有坏 不多大多时候是丧的 到了现在 终究让我相通了一件事情 深刻理解并追求自己想要做的事情是会幸福的 通过读了许多书 在b站上看了许多视频
  • 正则匹配emoji字符

    寻找emoji的编码范围 在这个网站中可以查看所有的emoji unicode Emoji Unicode table 用js代码找出这个页面所有emoji unicode 的范围 let list document querySelect
  • PostgreSql 数据库的访问权限配置

    本文主要简单的描述以下几个 在使用PostgreSql数据库时常见的 有关访问权限以及远程连接数据库的问题 及其解决办法 以下所述问题及解决办法都在postgresql8 0及windows 2003server的范围内 1 在本地使用po
  • 漫谈拥塞控制: pacing rate

    我基于综合效能结合排队论解释过 pacing 发送的益处 为什么 pacing 但该解释仍没有揭露 pacing 的本质 pacing 的本质是出让时间槽 出让时间槽无法降低整体等待时延 但可降低甚至消除抖动 即在任意短的采样周期内保持等待
  • CTF MISC解题思路BUUCTF MISC1-8刷题

    1 签题 扫描二维码到得flag 2 金 胖 题目为gif动画 用wps打开每帧保存成图片 flag就在其中几张图片 3 二维码 下载题目解压得到一个二维码图片 扫描没发现flag 使用010editor打开图片发现文件头为89 50 4E
  • [C语言]offseto宏的认识与模拟实现

    目录 1 offseto的认识 2 offseto的模拟实现 1 offseto的认识 在结构体中 因为内存对齐的存在我们需要进行计算才能知道结构体成员的地址对于结构体首地址的偏移量为多少 今天认识的offseto就是将结构体中成员地址对于
  • Day 13 - 正则表达式习题

    利用正则表达式完成下面的操作 1 用户名匹配 要求 1 用户名只能包含数字 字母 下划线 2 不能以数字开头 3 度在 6 到 16 位范围内 re username re compile r a zA Z w 5 15 print re