Jam*_*ers 0 html regex asp.net
是否可以使用正则表达式删除特定HTML块中的HTML标记?
例如
<body>
<p>Hello World!</p>
<table>
<tr>
<td>
<p>My First HTML Table</p>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
我不想删除所有P标签,只删除表元素中的标签.
删除或保留嵌套p标记内的文本的能力是理想的.
谢谢.
关于在解析HTML时不使用正则表达式有很多提及,所以你可以使用Html Agility Pack:
var html = @"
<body>
<p>Hello World!</p>
<table>
<tr>
<td>
<p>My First HTML Table</p>
</td>
</tr>
</table>";
HtmlDocument document = new HtmlDocument();
document.LoadHtml(html);
var nodes = document.DocumentNode.SelectNodes("//table//p");
foreach (HtmlNode node in nodes)
{
node.ParentNode.ReplaceChild(
HtmlNode.CreateNode(node.InnerHtml),
node
);
}
string result = null;
using (StringWriter writer = new StringWriter())
{
document.Save(writer);
result = writer.ToString();
}
Run Code Online (Sandbox Code Playgroud)
所以在完成所有这些操作后,您将获得下一个result:
<body>
<p>Hello World!</p>
<table>
<tr>
<td>
My First HTML Table
</td>
</tr>
</table></body>
Run Code Online (Sandbox Code Playgroud)