Discuss / Python / 这次练习第二题有点费脑,是参考评论区大佬代码实现的。两题都先编译正则表达式,再将addr与表达式比较。

这次练习第二题有点费脑,是参考评论区大佬代码实现的。两题都先编译正则表达式,再将addr与表达式比较。

Topic source

浅言87780

#1 Created at ... [Delete] [Delete and Lock User]

第一题:

def is_valid_email(addr):
    re_email=re.compile(r'^(\w+?)\.*(\w+?)@(\w+?).(\w+)$')
    if not re_email.match(addr):
        print('failed')
        return False
    else:
        print('ok')
    return True

第二题:

def name_of_email(addr):
    re_name=re.compile(r'^(<\w+?\s\w+?>)?\s*(\w+?)@(\w+?).(\w+)$')
    ismatch=re_name.match(addr)
    if ismatch:
        name=ismatch.group(1)
        if name:
            #地址带名字,去除尖括号
            return name[1:-1]
        else:
            #地址不带名字
            return ismatch.group(2)
    return  None

看评论区说+比*好用,想知道怎么看出的呢。感觉我的?用得有点多,括号里省掉?好像也可以。


  • 1

Reply