如何用Python正则表达式从Outlook收件人格式字符串中提取姓名
解决方案
你原来的思路是通过删除不需要的内容提取姓名,反而容易遗留多余符号,更简单的方案是直接用re.findall()匹配所有符合规则的姓名内容,一步拿到目标列表:
import re mystring = 'To: John Lennon <John.Lennon@gmail.com> \x02; Paul McCartney <Paul.McCartney@yahoo.com> \x02;' # 正则直接匹配所有姓名段,自动过滤前缀、分隔符、邮箱等无关内容 names = re.findall(r'(?:To:|; )\s*([^<]+?)\s*<', mystring) print(names)
运行后直接输出你需要的结果:
['John Lennon', 'Paul McCartney']
原代码问题说明
- 待替换规则没有覆盖分号
;,导致替换后分号残留 - 替换删除内容后原来内容之间的空格会保留,导致出现多余连续空格
- 替换的实现逻辑本身容错率更低,更推荐直接提取你需要的目标内容,而非删除所有不需要的内容
内容的提问来源于stack exchange,提问作者Asaf Lahav
相关产品推荐
相关产品推荐

