随便写写Python-day16-正则表达式作业
利用正则表达式完成下面的操作:
1.用户名匹配
要求: 1.用户名只能包含数字 字母 下划线
2.不能以数字开头
3.⻓度在 6 到 16 位范围内
user_name = input(请输入用户名:)
re_str = r[a-zA-Z_][da-zA-Z_]{5,15}
result = fullmatch(re_str, user_name)
if result:
print(合法!!!)
else:
print(不合法!!!)
- 密码匹配
要求: 1.不能包含!@#¥%^&*这些特殊符号
2.必须以字母开头
3.⻓度在 6 到 12 位范围内
password = input(请输入密码:)
re_str = r[a-zA-Z].{5,11}[^!@#¥%^&*]
result = fullmatch(re_str, password)
if result:
print(合法!!!)
else:
print(不合法!!!)
- ipv4 格式的 ip 地址匹配 提示: IP地址的范围是 0.0.0.0 - 255.255.255.255
ip_address = input(请输入ip地址:)
re_str = r((d|[1-9]d|1dd|2[0-4]d|25[0-5]).){3}(d|[1-9]d|1dd|2[0-4]d|25[0-5])
result = fullmatch(re_str, ip_address)
if result:
print(合法!!!)
else:
print(不合法!!!)
- 提取用户输入数据中的数值 (数值包括正负数 还包括整数和小数在内) 并求和
例如:“-3.14good87nice19bye” =====> -3.14 + 87 + 19 = 102.86
from functools import reduce re_str = r[+-]?d+.?d* result = findall(re_str, -3.14good87nice19bye) sum1 = reduce(lambda item1, item2: item1+float(item2), result, 0) print(sum1)
- 验证输入内容只能是汉字 chinese = input(请输入:) re_str = r[u4e00-u9fa5]+ result = fullmatch(re_str, chinese) if result: print(合法!!!) else: print(不合法!!!)
- 匹配整数或者小数(包括正数和负数) nums = input(请输入数字:) re_str = r[+-]?([1-9]d*|[1-9]d*.d+|0.d+) result = fullmatch(re_str, nums) if result: print(合法!!!) else: print(不合法!!!)
- 使用正则表达式获取字符串中所有的日期信息 匹配年月日日期 格式:2018-12-6 注意年的范围是1~9999, 月的范围是1~12, 日的范围是130或者131或者1~29(不考虑闰年) date = input(请输入日期格式:) re_str = r[1-9]d{0,3}-((([13578]|1[02])-([1-9]|[12]d|3[01]))|(([469]|11)-([1-9]|[12]d|30))|(2-([1-9]|[12]d))) result = fullmatch(re_str, date) if result: print(合法!!!) else: print(不合法!!!)
- 替换字符串中的不良内容:将输入的内容中的不良内容全部替换成*(参考王者荣耀聊天要求)
from re import sub word = input(请输入内容:) re_str = r艹|我吊你妈的|草你妈了隔壁|吊你妈的|傻逼|fuck|bitch result = sub(re_str, *, word) print(result)
