正则表达式:除了一种标签之外,从字符串中删除所有标签

时间:2011-07-29 12:24:28

标签: regex highlighting

我有这样的字符串

<p>test <span class=\"match\">match</span> <span class=\"testtes\">dddddd</span></p>

我想获得没有标签的字符串。但是我希望按类"match"保存突出显示:

test <span class=\"match\">match</span> dddddd

如果我想删除所有标记,则用空字符串替换满足regexp /<\/?[^>]*>/的所有子字符串。但是在我的特殊情况下我应该使用什么正则表达式?

UPD:算法是:如果你看到一些没有标签的句子然后你就不应该删除这些跨度;否则你应该删除所有标签

1 个答案:

答案 0 :(得分:0)

我可以做这样的事情

<\/?(?![^>]*class=\\"match)[^>]*>

这将保留开始标记并导致此

test <span class=\"match\">match dddddd

here on Regexr

但我应该如何找到匹配的结束标记?

<p>test <span class=\"match\">match</span> <span class=\"testtes\">dddddd</span></p>
                                   ^^^^^^^          or the next one?     ^^^^^^^

正则表达式无法知道哪个结束标记属于包含该类的开始<span>标记。我没有可能找到匹配的结束标签。所以使用正则表达式做这个不是一个好主意。

我很确定您使用的语言有一个可用于执行此任务的HTML解析器。