Python正则表达式不适用于Gmail正文

2024-09-29 03:42:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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一直说没有找到结果。有什么想法吗?你知道吗


Tags: namefromcomyoumessagenewyour电子邮件
1条回答
网友
1楼 · 发布于 2024-09-29 03:42:39

使用模式(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'}

相关问题 更多 >