如何解析WHOIS结果中的电子邮件地址

时间:2012-01-06 08:10:49

标签: .net regex

假设我有一个WHOIS查询,它以下列格式返回结果(针对此问题进行了简化:)

Domain name:           mydomain.ca
Administrative contact:
    Name:              John Smith
    ... other fields...
    Email:             johnsmith@gmail.com
Technical contact:
    Name:              Jane Doe
    Email:             janedoe@gmail.com
Name servers:
    ns1.mydomain.com
    ns2.mydomain.com

我想要一个正则表达式,它会给我管理联系人的电子邮件地址(johnsmith@gmail.com),但不是技术联系人的电子邮件地址。验证电子邮件地址本身的格式并不重要。

3 个答案:

答案 0 :(得分:2)

我根本不会尝试使用正则表达式。这就是我可能会做的事情:

  1. 将响应拆分为行
  2. 扫描显示“管理联系人:”
  3. 的行
  4. 扫描下一行有“电子邮件:”
  5. 的行
  6. 提取该行的第二个字
  7. 您可能需要根据需要微调此过程。

答案 1 :(得分:1)

正则表达式将是:

"Administrative contact:.*?Email: *([^ \n]*)"

你需要制作'。'特殊字符匹配任何字符,包括换行符。 不知道你是如何在C#中那样做的,但是在python中,匹配(测试它和它的工作原理)是这样完成的:

match = re.search(r"Administrative contact:.*?Email: *([^ \n]*)", text, re.DOTALL)

您可能还会考虑到这对于大型文件来说非常低效(匹配新行非常昂贵),因此您也可以考虑使用Jordan的解决方案。

答案 2 :(得分:1)

好吧,你可以只搜索电子邮件字符串,正则表达式是:

([\w-+]+(?:\.[\w-+]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7})

如前所述,注册商的网页格式,多个电子邮件地址等可能会有不同的格式,这会让您感到痛苦。