使用Xpath解析电子邮件地址的纯文本

时间:2014-10-28 10:42:29

标签: c# xpath html-agility-pack

我有一个像

这样的纯文本
...
Registrant Email: trinhtuanhung@gmail.com
...
Admin E-mail:ng2tuan@gmail.com

我尝试将其放入htmlagilitypack以挑选所有电子邮件地址但没有结果返回

 var doc = new HtmlAgilityPack.HtmlDocument();
 doc.LoadHtml(html);
 var emails= doc.DocumentNode.SelectNodes("//*[contains(text(), '@')]");

1 个答案:

答案 0 :(得分:0)

当文本文件只包含纯文本时,您无法使用Xpath执行此操作 试试这个:

    private static List<String> ExtractMailsFromFile(string filename)
    {
        string data = File.ReadAllText(filename);
        Regex emailRegex = new Regex(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", RegexOptions.IgnoreCase);
        MatchCollection emailMatches = emailRegex.Matches(data);
        return (from Match emailMatch in emailMatches select emailMatch.Value).ToList();
    }