题一:
p = re.compile(r'[0-9a-zA-Z.]+@[0-9a-zA-Z]+[.][a-zA-Z]{3}$')
注意[ ]类别中本身就是原义字符,所以无须再用\,用了也没关系,仅仅是多一个\的选择而已
题二:
p = re.compile(r'(<(?P<name>.+?)>)?\s*(?P<name1>[a-zA-Z]+)@[a-zA-Z]+[.][a-zA-Z]{3}')
这里(?P<name>...)是命名组的使用形式,其中name为组的名字,可以这样用group('name')来取组的数据。这里用了?来限制+的贪婪匹配。最后只需判断group('name')是否为空,来决定时取name还是name1
Kirto先森
题一: p = re.compile(r'[0-9a-zA-Z.]+@[0-9a-zA-Z]+[.][a-zA-Z]{3}$') 注意[ ]类别中本身就是原义字符,所以无须再用\,用了也没关系,仅仅是多一个\的选择而已
题二: p = re.compile(r'(<(?P<name>.+?)>)?\s*(?P<name1>[a-zA-Z]+)@[a-zA-Z]+[.][a-zA-Z]{3}') 这里(?P<name>...)是命名组的使用形式,其中name为组的名字,可以这样用group('name')来取组的数据。这里用了?来限制+的贪婪匹配。最后只需判断group('name')是否为空,来决定时取name还是name1