Python 正则表达式不适用于 Gmail 正文
Posted
技术标签:
【中文标题】Python 正则表达式不适用于 Gmail 正文【英文标题】:Python Regular Expression not working for Gmail body 【发布时间】:2019-12-02 00:32:18 【问题描述】:我正在尝试使用 python 正则表达式从 GMAIL 电子邮件正文中提取姓名、电话号码和电子邮件,Zapier 一直说找不到结果。
这是电子邮件的正文:
*****************************************************************
You received a new message from your online store's contact form.
*****************************************************************
Name:
-----
James Bacon
Phone:
------
3171234567
Email:
------
jamesb1234@gmail.com
Intentions:
-----------
my family
这是我的正则表达式:
Name:\n-----\n(.*)\n
Regex101.com 说它找到了匹配项,但 Zapier 一直说没有找到结果。有什么想法吗?
【问题讨论】:
您能否更新您的问题以包含您发送给 zapier 的输入? 我试过了,效果很好:zappy.zapier.com/42D672BE-D5D7-4B14-ACDE-5DCC2DF8F762.png -> zappy.zapier.com/AA164FB2-CC66-4ABD-A76A-BF605430839C.png 【参考方案1】:使用模式(Name|Phone|Email):.*?\n([^\n\-]+)\n(?=^.*?:)
(regex101 link):
data = '''*****************************************************************
You received a new message from your online store's contact form.
*****************************************************************
Name:
-----
James Bacon
Phone:
------
3171234567
Email:
------
jamesb1234@gmail.com
Intentions:
-----------
my family'''
import re
name = re.findall(r'Name:.*?\n([^\n\-]+)\n(?=^.*?:)', data, flags=re.DOTALL|re.M)
phone = re.findall(r'Phone:.*?\n([^\n\-]+)\n(?=^.*?:)', data, flags=re.DOTALL|re.M)
email = re.findall(r'Email:.*?\n([^\n\-]+)\n(?=^.*?:)', data, flags=re.DOTALL|re.M)
print(name)
print(phone)
print(email)
打印:
['James Bacon']
['3171234567']
['jamesb1234@gmail.com']
或者一行:
g = re.findall(r'(Name|Phone|Email):.*?\n([^\n\-]+)\n(?=^.*?:)', data, flags=re.DOTALL|re.M)
print(g)
打印:
[('Name', 'James Bacon'), ('Phone', '3171234567'), ('Email', 'jamesb1234@gmail.com')]
这可以反馈给dict
:
d = dict(re.findall(r'(Name|Phone|Email):.*?\n([^\n\-]+)\n(?=^.*?:)', data, flags=re.DOTALL|re.M))
print(d)
打印:
'Name': 'James Bacon', 'Phone': '3171234567', 'Email': 'jamesb1234@gmail.com'
【讨论】:
以上是关于Python 正则表达式不适用于 Gmail 正文的主要内容,如果未能解决你的问题,请参考以下文章
我的正则表达式适用于 regex101 但不适用于 python? [复制]