我尽量给大家提供最简化版答案
Topic source提取邮件中名字(含英文句点),我像下面这样弄,那个bill.gates提不出来,返回False。不晓得咋弄出这个带点名字?!
import re
#提取带名字的email地址中的名字:
def name_of_email(addr):
addr = str(addr)
m1 = re.match(r'.*?(\w+[\.|\s]?\w+)@.*?', addr)
if m1:
print(m1.group(1))
return m1.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.gates')
print('ok')
运行结果:
Tom Paris
tom
False
ok
def name_of_email(addr): return re.match(r'.*?([\w\.]+[\s\w]+|[\w\s]+)',addr).group(1)
我编了一个,可以把bill.gates给提取出来
print(name_of_email('bill.gates@microsoft.com'))
第二个有问题,虽然测试能够通过,但是并未验证全部邮箱格式:
def name_of_email(addr):
print(re.match(r'.*?([\w\s]+)', addr).group(0)) # 这里可以看到验证的是邮箱的部分内容,<Tom Paris, tom
return re.match(r'.*?([\w\s]+)', addr).group(1)
import re
re.match(r'.*?([\w\s\.]+)','bill.gates@microsoft.com').group(1)
多谢大佬呀。
这个可以把世界首富的名字匹配出来:)
有什么特征符号加进范围捕获里面就行
- 1
遥望君山