与正则表达式反转匹配

时间:2010-10-08 09:38:43

标签: regex

如何使用正则表达式从HTML字符串中排除样式属性?

例如,如果我们有以下内联HTML字符串:

<html><body style="background-color:yellow"><h2 style="background-color:red">This is a heading</h2><p style="background-color:green">This is a paragraph.</p></body></html>

应用正则表达式匹配时,匹配结果应如下所示:

<html><body ><h2 >This is a heading</h2><p >This is a paragraph.</p></body></html>

3 个答案:

答案 0 :(得分:1)

您无法使用正则表达式解析HTML,因为HTML不是常规的。

当然,您可以自担风险,例如搜索style\s*=\s*"[^"]*"并将其替换为空,但这将删除任何出现的style="anything"你的文字。

答案 1 :(得分:0)

你只需要用什么都不替换样式标签,这里有一个如何用PHP做的例子:

$text = preg_replace('/\s+style="[^"]*"/', '', $text);

答案 2 :(得分:0)

大多数人回答说,在大多数情况下,正则表达式不适合HTML,所以你应该提供计划实现它的语言。

然而,像这样的正则表达式将取代标题:

<h2\s+style="background-color:red">
// replace with
<h2>

段落标记的正则表达式是类似的(将'h2'替换为'p',将'red'替换为'green')。