【问题标题】:Parse plain text for email address using Xpath使用 Xpath 解析电子邮件地址的纯文本
【发布时间】:2014-12-23 17:38:59
【问题描述】:

我有一个像

这样的纯文本
...
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(), '@')]");

【问题讨论】:

  • 您不能在没有 HTML 标记的文件上使用您的库。事实上,您不能对纯文本使用任何 XML/XSLT/XPath 工具。我建议在 C# 级别使用正则表达式从您的文件中提取邮件地址。

标签: c# xpath html-agility-pack


【解决方案1】:

您将无法使用 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();
    }

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 2011-01-07
    • 2011-11-27
    • 2010-10-07
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多