Discuss / Python / 全都是 半个书名号也能过的,有三种email地址模式 我就来三个pattern

全都是 半个书名号也能过的,有三种email地址模式 我就来三个pattern

Topic source

SpringShaw

#1 Created at ... [Delete] [Delete and Lock User]
import re
def name_of_email(addr):
    posfix ='@(\w+).(com|org|cn|net|org.com|edu.com|gov.com|com.cn|gov.cn|edu.cn)$'
    str1=r'^<(\w+[\s\.]?\w+)>\s\w+[\s\.]?\w+'
    str2=r'^(\w+)'
    str3=r'^(\w+)[\s\.]\w+'
    for s in [str1,str2,str3]:
        m=re.match(s+posfix,addr)
        if m:
            return m.group(1)


assert name_of_email('<Tom Paris> tom@voyager.org') == 'Tom Paris'
assert name_of_email('tom@voyager.org') == 'tom'
assert name_of_email('bill.gates@microsoft.com') == 'bill'
assert name_of_email('<Tom Paris> Tom Paris@microsoft.com') == 'Tom Paris'
#下面这些也能过吗?????
assert name_of_email('<Tom Paris>@voyager.org') == None
assert name_of_email('Tom Paris> tom@voyager.org') == None
assert name_of_email('bill.gates.andy@microsoft.com') == None
assert name_of_email('<bill.gates@microsoft.com') == None
print('ok')

  • 1

Reply