2014-10-28 80 views
-2

我有一個純文本像解析純文本使用XPath

... 
Registrant Email: [email protected] 
... 
Admin E-mail:[email protected] 

我嘗試投入htmlagilitypack此挑選出所有的電子郵件地址,電子郵件地址,但沒有結果恢復

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

你不能在沒有HTML標記文件中使用磁帶庫。事實上,你不能在純文本上使用任何XML/XSLT/XPath工具。我建議使用C#級別的正則表達式從文件中提取郵件地址。 – 2014-10-28 11:00:50

回答

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(); 
    }