from re import *
- 写一个正则表达式判断一个字符串是否是ip地址
规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数字的大小是0-255
255.189.10.37 正确
256.189.89.9 错误
re_str=r'^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$'
re_str1=r"(([0-1]?\d?\d?|2[0-4][0-9]|25[0-5])\.){3}([0-1]?\d?\d?|2[0-4][0-9]|25[0-5])"
str3="255.189.10.37"
result=fullmatch(re_str1,str3)
print(result) # <re.Match object; span=(0, 13), match='255.189.10.37'>
- 计算一个字符串中所有的数字的和
例如:字符串是:‘hello90abc 78sjh12.5’ 结果是90+78+12.5 = 180.5
def sum_num(re_str, str1):
result = findall(re_str, str1)
print(result)
sum = 0
for item in result:
sum += float(item)
return sum
re_str = r'[\-+]?\d*\.?\d|\d'
str1 = 'hello90abc 78sjh12.5'
print(sum_num(re_str, str1))
# 180.5
- 验证输入的内容只能是汉字
def han_char(re_str, str1):
result = findall(re_str, str1)
if len(result) == len(str1):
return "输入的内容都是汉字"
return '输入的内容不全是汉字'
re_str = r'[\u4e00-\u9fa5]'
str1 = "我全部是汉字组成"
str2 = "我不全是汉字组成!!!"
print(han_char(re_str, str1)) # 输入的内容都是汉字
print(han_char(re_str, str2)) # 输入的内容不全是汉字
- 电话号码的验证
def tel_check(re_str, str1):
if fullmatch(re_str, str1):
return "是正常的号码!"
return '不是正常号码!'
re_str = r'1[3578][0-9]{9}'
tel_num = '1397483728'
tel_num1 = '13974837528'
print(tel_check(re_str, tel_num)) # 不是正常号码!
print(tel_check(re_str, tel_num1)) # 是正常的号码!
- 验证输入用户名和QQ号是否有效并给出对应的提示信息 要求:
用户名必须由字母、数字或下划线构成且长度在6~20个字符之间
QQ号是5~12的数字且首位不能为0
class QQ_nameError(Exception):
def __str__(self):
return "QQ用户名格式错误!"
class QQ_numError(Exception):
def __str__(self):
return "QQ账户格式错误!"
class QNumber:
def __init__(self, qq_name=None, qq_num=None):
self._qq_name = qq_name
self._qq_num = qq_num
self.__re_qq_name = r'[0-9_a-zA-Z]{6,21}'
self.__re_qq_num = r'[1-9]\d{5,13}'
@property
def qq_name(self):
return self._qq_name
@qq_name.setter
def qq_name(self, value):
if fullmatch(self.__re_qq_name, value):
self._qq_name = value
else:
raise QQ_nameError
@property
def qq_num(self):
return self._qq_num
@qq_num.setter
def qq_num(self, value):
if fullmatch(self.__re_qq_num, value):
self._qq_num = value
else:
raise QQ_numError
qq1 = QNumber()
qq1.qq_num = "12323789"
qq1.qq_name = "743swrssdt"
qq2 = QNumber()
# qq2.qq_num = '0327832' # __main__.QQ_numError: QQ账户格式错误!
# qq2.qq_name = "sdw" # __main__.QQ_nameError: QQ用户名格式错误!
6.拆分长字符串:将一首诗的中的每一句话分别取出来
poem = '窗前明月光,疑是地上霜。举头望明月,低头思故乡。'
def split_poem(re_str,str1):
return split(re_str,str1)
re_str=r'[,。]'
poem = '窗前明月光,疑是地上霜。举头望明月,低头思故乡。'
print(split_poem(re_str,poem)) # ['窗前明月光', '疑是地上霜', '举头望明月', '低头思故乡', '']