作业
from re import *
1.写一个正则表达式判断一个字符串是否是ip地址
规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数字的大小是0-255
255.189.10.37 正确
256.189.89.9 错误
re_str = r'((1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9]\.)){3}' \
r'((1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9]))'
print(fullmatch(re_str, '25.188.255.158')) # <re.Match object; span=(0, 14), match='25.188.255.158'>
print()
2.计算一个字符串中所有的数字的和
例如:字符串是:‘hello90abc 78sjh12.5’ 结果是90+78+12.5 = 180.5
re_str = r'\d+\.\d|\d+'
result = findall(re_str, 'hello90abc 78sjh12.5')
num = 0
for x in result:
num += float(x) # 180.5
print(num)
3.验证输入的内容只能是汉字
re_str = r'\b[\u4E00-\u9FA5][\u4E00-\u9FA5]\b'
print(search(re_str, '你好')) # <re.Match object; span=(0, 2), match='你好'>
4.电话号码的验证
re_str = r'1[3-9]\d{9}'
print(search(re_str, '14798587888')) # <re.Match object; span=(0, 11), match='14798587888'>
5.验证输入用户名和QQ号是否有效并给出对应的提示信息
要求:
用户名必须由字母、数字或下划线构成且长度在6~20个字符之间
QQ号是5~12的数字且首位不能为0
def user():
re_user = r'[a-zA-Z_]{6,20}'
user_num = input("请输入用户名:")
result = search(re_user, user_num)
if result == None:
print("用户名错误")
else:
return 1
user() # 请输入用户名:+45111512 # 用户名错误
def pass_word():
re_pass = r'[1-9]\d{4,11}'
user_pass = input("请输入用户名:")
result = search(re_pass, user_pass)
if result == None:
print("密码错误")
else:
print("登录成功")
def main():
num_1 = user()
if num_1 == 1:
pass_word()
if __name__ == '__main__':
main()
6.拆分长字符串:将一首诗的中的每一句话分别取出来
poem = '窗前明月光,疑是地上霜。举头望明月,低头思故乡。'
poem = '窗前明月光,疑是地上霜。举头望明月,低头思故乡。'
result = split(r'。', poem)
for x in result:
m = split(r',', x)
for i in m:
print(*i)
# 窗 前 明 月 光
# 疑 是 地 上 霜
# 举 头 望 明 月
# 低 头 思 故 乡