假设我有一个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),但不是技术联系人的电子邮件地址。验证电子邮件地址本身的格式并不重要。
答案 0 :(得分:2)
我根本不会尝试使用正则表达式。这就是我可能会做的事情:
您可能需要根据需要微调此过程。
答案 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})
如前所述,注册商的网页格式,多个电子邮件地址等可能会有不同的格式,这会让您感到痛苦。