用字符串替换所有打开的标签

时间:2012-06-21 00:51:26

标签: regex

在有人向我指出这个问题之前,我知道人们无法使用正则表达式解析html :)这不是我想要做的。

我需要的是:

输入:包含html的字符串。 输出:替换所有打开标记

***<tag>

所以,如果我得到

<a><b><c></a></b></c>, I want

***<a>***<b>***<c></a></b></c>

作为输出。

我尝试过类似的事情:

(<[~/].+>)

并将其替换为

***$1

但似乎并不像我想要的那样工作。有什么指针吗?

澄清:保证输入中没有自闭标签或评论。

2 个答案:

答案 0 :(得分:2)

您只有两个问题:^是要从字符类中排除项目的字符,而不是~;并且.+是贪婪的,因此会在最终>之前匹配尽可能多的字符。将其更改为:

(<[^/].+?>)

您也可以删除括号并替换为$0$&,具体取决于语言。

答案 1 :(得分:1)

尝试使用:(<[^/].*?>)并将其替换为***$1