【发布时间】:2011-01-13 17:19:05
【问题描述】:
我正在尝试用 C# 编写一个正则表达式来删除所有脚本标签以及其中包含的任何内容。
到目前为止,我想出了以下内容:\<([^:]*?:)?script\>[^(\</<([^:]*?:)?script\>)]*?\</script\>,但这不起作用。
我将把它分解并在每个部分中解释我的想法:
\<([^:]*?:)?script\>
在这里我试图声明它应该获取任何脚本元素,即使它以命名空间为前缀,例如 <a:script></a:script>. 我也已将其添加到结束标记中。
[^(\</<([^:]*?:)?script\>)]*?
在这里我试图声明它应该允许标签中包含除</a:script>、</script> 等之外的任何内容。
\</script\>
我在这里声明它应该有一个结束标签。
谁能发现我哪里出错了?
【问题讨论】:
-
请提供您的一些数据并指出哪些数据不合格。
-
“谁能发现我哪里出错了?”。是的。使用正则表达式解析 HTML 是你最大的错误。
-
您考虑过使用 HtmlAgilityPack 吗?例如stackoverflow.com/questions/2785092/…
-
stackoverflow.com/questions/1732348/… 一遍又一遍,一遍又一遍
-
谢谢大家,我会试试 HTMLAgilityPack。我理解这个问题:标签中的标签会破坏这个东西。