Discuss / Python / 我做的作业

我做的作业

Topic source

通过做题目得出一个经验,正则表达式是否合适,可以先在一个python编成环境,例如anaconda的Jupiter notebook里用re.match()测试一下。

第一题:

def is_valid_email(addr):

   if re.match(r'^\w+\.?\w+\@\w+\.\w+$',addr):

       return True

   else:

       return False

可以测试通过。仔细想想这个有所限定,@前至少有两个字符,@后只能有一个.。

def is_valid_email(addr):

   if re.match(r'^[0-9a-zA-Z\.]+@[0-9a-zA-Z\.]+$',addr):

       return True

   else:

       return False

也可以测试通过。这个在@前后就不局限多少个.了,但可能开始就是一个.啊,也可能出现..。

第二题:

def name_of_email(addr):

    if re.match(r'^<(\w+\s?\w+)>\s?\w+@\w+\.\w+$',addr):

        m = re.match(r'^^<(\w+\s?\w+)>\s?\w+@\w+\.\w+$',addr)

        return m.group(1)

    elif re.match(r'^(\w+)@\w+\.\w+$',addr):

        m = re.match(r'^(\w+)@\w+\.\w+$',addr)

        return m.group(1)

    else:

        return None

能够通过测试,就是感觉挺难看的。


  • 1

Reply