Regex需要删除和替换两个条件中指定的html标记';s使用C#

本文关键字:html 标记 使用 条件 删除 替换 两个 Regex | 更新日期: 2023-09-27 18:25:22

1)用相应的html标记只替换几个html标记。

示例:将h1标记替换为h4标记,将div标记替换为p标记。

输入:

<div><h1>First</h1><h1 align='center'>Second</h1></div><span>third</span>

预期输出:

<p><h4>First</h4><h4 align='center'>Second</h4></p><span>third</span>

2) 只删除几个html标签

示例:删除div和h1标记。

输入:

<div><h4>First</h4><h1 align='center'>Second</h1></div>

预期输出:

<h4>First</h4>Second

fyi:我试过使用

Regex.Replace(html, @"</?h1>", "")

但如果标签具有属性,则不会删除。

Regex需要删除和替换两个条件中指定的html标记';s使用C#

您可以在正则表达式中使用捕获组,并根据此处的文档在替换中使用它们:http://msdn.microsoft.com/en-us/library/e7f5w83z

//to remove all h1 tags:
Regex.Replace(html, @"</?h1[^>]*>", "")
//to replace all div tags with p, keeping the same attributes:
Regex.Replace(html, @"(</?)div([^>]*>)", "$1p$2")
//to change the attributes of the div tags you will need two regexes:
//one for the opening tags
Regex.Replace(html, @"<div[^>]*>", "<p class='content'>")
//one for the closing tag
Regex.Replace(html, @"</div>", "</p>")

添加最后一个示例是为了回答一个注释,之所以需要两个,是因为字符串的新部分(将要添加的部分)不同。

您尝试过正则表达式</?(h1|div)[^>]*>吗?(或者,如果只想删除h1标签,</?h1[^>]*>?)