用于提取脚本标签的正则表达式

时间:2011-01-13 17:19:06

标签: c# regex

我正在尝试在C#中编写一个正则表达式来删除所有脚本标记及其中包含的任何内容。

到目前为止,我已经提出了以下内容:\<([^:]*?:)?script\>[^(\</<([^:]*?:)?script\>)]*?\</script\>,但这不起作用。

我会分解并在每个部分解释我的想法:

\<([^:]*?:)?script\>

这里我试图声明它应该获取任何脚本元素,即使它带有名称空间的前缀,例如<a:script></a:script>.我也将它添加到结束标记。

[^(\</<([^:]*?:)?script\>)]*?

我在此尝试声明除了</a:script></script>等之外,它应该允许在标记中包含任何内容。

\</script\>

我在这里声明它应该有一个结束标记。

有人能找到我错的地方吗?

2 个答案:

答案 0 :(得分:15)

这个正则表达式可以解决问题:

\<(?:[^:]+:)?script\>.*?\<\/(?:[^:]+:)?script\>

但请不要这样做

您将通过这个简单的HTML遇到问题:

<script>
var s = "<script></script>";
</script>

你打算如何解决这个问题?使用HTML Agility Pack进行此类操作更为明智。

答案 1 :(得分:12)