我使用HTMLAgiltyPack提取發送給我們的查詢中嵌入的電子郵件地址。有問題的HTML部分是以下形式:使用HtmlAgilityPack的InnerText提取電子郵件時保留換行符
<div class="queryBody">
<span>
****Query here****
MAY contain paragraphs and lists tags.
</span>
</div>
這是我的代碼:
string query = queryHtml.DocumentNode.SelectNodes(
@"//div[@class='queryBody']
/span")[0].InnerText;
string pattern = @"([\w.]+)@([\w.]+)\.([a-z]+)";
Match match = Regex.Match(par, pattern);
string email = "";
if (match.Success)
{
email = match.Value;
}
當<span>
內的HTML包含段落和列表時出現了問題。在這種情況下,query
將返回一個大字符串,其中省略了<p>
和<li>
的所有換行符。
例子:
<div class="queryBody">
<span>
<p>I am unable to log into my account</p>
<p>Please help me sort out this problem</p>
<p>My email is: [email protected]</p>
<p>cell: 021901493</p>
</span>
</div>
query
將返回:
I am unable to log into my accountPlease help me sort out this problemMy email is: [email protected]: 021901493
這使得它非常難用我的正則表達式來提取電子郵件地址。有什麼方法可以在使用HtmlAgilityPack遍歷HTML節點時保留換行符?還有什麼可以成功提取電子郵件地址的嗎?
我不能repro。我得到所有換行符,結果是'rebecca.h @ gmail.com'。如果原始HTML中沒有換行符,那麼我可以重新制作。 –