我有一个像
这样的行的文件From david.horwitz@uct.ac.za Fri Jan 4 06:08:27 2008
Received: (from apache@localhost)
Return-Path: <postmaster@collab.sakaiproject.org>
for <source@collab.sakaiproject.org>;
我试图读取每一行并使用正则表达式来查找域名,基本上是符号@后面的部分。这是我写的代码
if re.search('[@]\S+?', line) : org = re.findall('@(\S+)',line)[0]
但它返回以下结果
uct.ac.za
localhost)
collab.sakaiproject.org>
collab.sakaiproject.org>;
是否有任何智能方法只保留域名,并且不包含&#39;)&#39;,&#39;&gt;&#39;或者&#39;&gt;;&#39;其次是域名?
答案 0 :(得分:3)
轻微修正 - FQDN也可以包括数字......
所以正则表达式需要稍微调整
[@] [A-ZA-Z0-9 .-] +
的完整域规则答案 1 :(得分:2)
试试这个
使用正则表达式否定来执行此操作,[^\>\)\s]+
if re.search('@([^\>\)\s]+)', line) : org = re.findall('@([^\>\)\s]+)',line)[0]
输出
uct.ac.za
localhost
collab.sakaiproject.org
collab.sakaiproject.org