day16 正则表达式作业1

day16 正则表达式作业1

# 1.用户名匹配
"""
要求:	1.用户名只能包含数字 字母 下划线2.不能以数字开头 3.⻓度在 6 到 16 位范围内
"""
from re import fullmatch,findall,sub
re_str=r'[_a-zA-Z][0-9a-zA-Z_]{5,15}'
print(fullmatch(re_str,'abc123'))#

# 2.密码匹配
# 要求:	1.不能包含!@#¥%^&*这些特殊符号2.必须以字母开头 3.⻓度在 6 到 12 位范围内
re_str=r'[a-zA-Z][^!@#¥%^&*]{5,11}'
print(fullmatch(re_str,'T123?fejfo'))#

# 3.ipv4 格式的 ip 地址匹配
# 提示: IP地址的范围是 0.0.0.0 - 255.255.255.255
"""
0-255分解成'[0,1]?\d?[0-9]|2[0-4]\d|25[0-5]'
0-199->'[0,1]?\d?[0-9]'
200-249->'2[0-4]\d'
250-255->'25[0-5]'

"""
re_str='(([0,1]?\d?[0-9]|2[0-4]\d|25[0-5])\.){3}([0,1]?\d?[0-9]|2[0-4]\d|25[0-5])'
print(fullmatch(re_str,'0.120.0.255'))

# 4.提取用户输入数据中的数值 (数值包括正负数 还包括整数和小数在内) 并求和
# 例如:“-3.14good87nice19bye” =====> -3.14 + 87 + 19 = 102.86
re_str='[0-9-.+]+'
print(findall(re_str,'-3.14good87nice19bye'))
result=findall(re_str,'-3.14good87nice19bye')
sum=0
for x in result:
    sum+=float(x)
print(sum)#102.86

# 5.验证输入内容只能是汉字
re_str=r'[\u4e00-\u9fa5]+'
print(fullmatch(re_str,'你好'))#

# 6.匹配整数或者小数(包括正数和负数)
re_str=r'[-+]?([0]|[1-9]\d*|0\.\d+|[1-9]\.[0-9]+)'
print(fullmatch(re_str,'-2.333'))#

# 7.使用正则表达式获取字符串中所有的日期信息 ,匹配年月日日期 格式:2018-12-6
# 注意年的范围是1~9999, 月的范围是1~12, 日的范围是1~30或者1~31或者1~29(不考虑闰年)
re_str=r'[1-9]\d{3}\-([1-9]|1[012])\-([1-9]|[12][0-9]|3[01])'
print(fullmatch(re_str,'2020-12-28'))#

# 8.替换字符串中的不良内容:将输入的内容中的不良内容全部替换成*(参考王者荣耀聊天要求)

re_str=r'[fuck|草|sb|妈*|干*]'
str='fuck fjeorierpgefG干空儿积分看懂打开妈废热4'
print(sub(re_str,'*',str))


你可能感兴趣的:(python作业,python)