我見過的正則表達式,可以刪除標記,這是偉大的,但我也有這樣的東西去掉字符串中的所有HTML?
等
這實際上不是從HTML文件。它實際上來自一個字符串。我從SharePoint Web服務拉低數據,這使我的HTML用戶可以使用/獲取生成像
<div>Hello! Please remember to clean the break room!!! "bob"e; <BR> </div>
所以,我通過100-900行解析每8-20列。
我見過的正則表達式,可以刪除標記,這是偉大的,但我也有這樣的東西去掉字符串中的所有HTML?
等
這實際上不是從HTML文件。它實際上來自一個字符串。我從SharePoint Web服務拉低數據,這使我的HTML用戶可以使用/獲取生成像
<div>Hello! Please remember to clean the break room!!! "bob"e; <BR> </div>
所以,我通過100-900行解析每8-20列。
查看HTML Agility Pack,它是一個HTML解析器,可用於從文檔中的HTML節點中提取InnerText
。
由於一直以來pointedoutmany times在這裏,你不能信任HTML解析到正則表達式。有些時候它可能被認爲是合適的(對於極其有限的任務);但總的來說,HTML太複雜,太容易出現不規則性。 Bad things can happen when you try to parse HTML with Regular Expressions。
使用諸如HAP之類的解析器可爲您提供更大的靈活性。
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load("path to your HTML document");
StringBuilder content = new StringBuilder();
foreach (var node in doc.DocumentNode.DescendantNodesAndSelf())
{
if (!node.HasChildNodes)
{
sb.AppendLine(node.InnerText);
}
}
您還可以對文檔執行XPATH查詢,如果您只對特定的節點感興趣或一組節點:什麼它看起來喜歡用它完成這個任務,(粗)例如:
var nodes = doc.DocumentNode.SelectNodes("your XPATH query here");
希望這會有所幫助。
強制鏈接:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – thecoop 2011-02-23 18:46:40