我试图使用正则表达式来提取“@”符号和“。”之间的电子邮件地址部分。字符。这是我目前正在做的,但不能得到正确的结果。提取部分电子邮件地址的正则表达式
company = re.findall('^From:[email protected](.*).',line)
给我:
['@iupui.edu']
我想摆脱的.edu
我试图使用正则表达式来提取“@”符号和“。”之间的电子邮件地址部分。字符。这是我目前正在做的,但不能得到正确的结果。提取部分电子邮件地址的正则表达式
company = re.findall('^From:[email protected](.*).',line)
给我:
['@iupui.edu']
我想摆脱的.edu
以匹配您的正则表达式字面.
,则需要使用\.
,所以你的代码应该看起来像这样:
company = re.findall('^From:[email protected](.*)\.',line)
# ^this position was wrong
请参阅live here。
请注意,由于(.*)
是贪婪的,因此它将始终匹配字符串中最后一次出现的.
。如果你想匹配第一出现时,你需要从捕获组排除任何.
:
company = re.findall('^From:[email protected]([^\.]*)\.',line)
看到一个demo。
你可以只拆分和发现:
s = " [email protected] I"
s = s.split("@", 1)[-1]
print(s[:s.find(".")])
或者只是分裂,如果它不总是会符合您的字符串:
s = s.split("@", 1)[-1].split(".", 1)[0]
如果再发现将是最快的:
i = s.find("@")
s = s[i+1:s.find(".", i)]
一个简单的例子是:
>>> import re
>>> re.findall(".*(?<=\@)(.*?)(?=\.)", "From: [email protected]")
['moo']
>>> re.findall(".*(?<=\@)(.*?)(?=\.)", "From: [email protected]")
['moo-hihihi']
此主机名而不管该特定行的开始的,即,它是贪婪。
你检查了吗? https://docs.python.org/2/library/email.html – nhahtdh
点需要在正则表达式中转义 – anubhava
域名通常包含多个点,您是否希望匹配第一个或最后一个点? – Ctx