使用Regex删除HTML

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标记内的文本的能力是理想的.

谢谢.

Ale*_*lex 5

关于在解析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)