2019-08-13作业

from re import *

  1. 写一个正则表达式判断一个字符串是否是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'>
  1. 计算一个字符串中所有的数字的和
    例如:字符串是:‘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
  1. 验证输入的内容只能是汉字
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))  # 输入的内容不全是汉字

  1. 电话号码的验证
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))  # 是正常的号码!

  1. 验证输入用户名和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)) # ['窗前明月光', '疑是地上霜', '举头望明月', '低头思故乡', '']
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写一个正则表达式判断一个字符串是否是ip地址规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数字的大小...
    容荔阅读 149评论 0 0
  • 写一个正则表达式判断一个字符串是否是ip地址规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数字的大小...
    数番番阅读 159评论 0 0
  • 1. 写一个正则表达式判断一个字符串是否是ip地址 规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数...
    Lis_reak阅读 252评论 0 0
  • 随着国内外形势的的急剧变化, 企业所面临的机遇与风险都更加难以判断, 除了丰富的经验,管理者还需要更多的理论知识充...
    Aaron曹勇阅读 633评论 0 1
  • OliverWorlds File 093 今天是2019年第三个橙色高温预警天,走在外面连呼吸都是一股令人窒息的...
    OliverWorlds阅读 602评论 0 1