我想替换 H​​TML 标签但保留中间的文本

我想替换 H​​TML 标签但保留中间的文本

我想替换 H​​TML 标签但保留中间的文本。
查找:<span class="Heading3-strong">.*?</span>
替换:<strong>.*?</strong>
中间好像出了点问题……

答案1

目前尚不清楚您在哪个程序中使用正则表达式,但您要查找的是捕获组反向引用

例如,在 Notepad++ 中,以下命令可行:

寻找:

<span class="Heading3-strong">(.*?)</span>

用。。。来代替:

<strong>\1</strong>

是对正则表达式中第一个捕获组(和\1之间的部分)的反向引用。()

答案2

我之前的帖子已被删除,所以让我再试一次,并提供更多详细信息。

说实话,不要在嵌套标记上使用正则表达式. 这是痛苦的根源。

尽管 Glorfindel 的示例适用于简单情况,但只要遇到嵌套标签集,它就会失败。

作品:

<span class="Heading3-strong">this is text</span>

... 变成:

<strong>this is text</strong>

这仍然是格式良好且有效的标记。

然而,这是行不通的:

<span class="Heading3-strong">this is text <span style="color:red;">with</span> <span style="color:blue;">additional</span> <span style="color:green;">tags</span> in the middle</span>

... 变成:

<strong>this is text <span style="color:red;">with</strong> <span style="color:blue;">additional</span> <span style="color:green;">tags</span> in the middle</span>

现在格式错误標識。

对于简单的正则表达式来说,这是一个棘手的问题——仅使用正则表达式根本无法正确处理嵌套标记。如果您需要更改任何类型的嵌套标记内容中的标记对,最好的办法是使用专门针对标记的工具,例如 XSLT 或类似工具。

相关内容