2014-10-28 2 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# для извлечения почтовых адресов из вашего файла. –

ответ

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(); 
    } 
Смежные вопросы