我见过可以删除标签的正则表达式,这很棒,但我也有像
这样的东西
等
这实际上不是来自HTML文件。它实际上来自一个字符串。我正在从SharePoint Web服务中提取数据,这使我可以使用/生成的HTML用户
<div>Hello! Please remember to clean the break room!!! "bob"e; <BR> </div>
所以,我正在解析100-900行,每行8-20列。
答案 0 :(得分:9)
查看HTML Agility Pack,它是一个HTML解析器,可用于从文档中的HTML节点中提取InnerText
。
就像SO pointed out many 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");
希望这有帮助。