我試圖使用正則表達式來提取「@」符號和「。」之間的電子郵件地址部分。字符。這是我目前正在做的,但不能得到正確的結果。提取部分電子郵件地址的正則表達式
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