【发布时间】:2016-11-23 16:39:57
【问题描述】:
在我的 Rss Feeds 阅读系统上,我需要删除任何现有的脚本块,因为有些人说这会混淆 XmlReader。
为此,我正在编写我在网上找到的这段代码:
allXml = Regex.Replace(allXml, "(.*)<script type='text/javascript'>.+?</script>(.*)", "$1$2");
但这太慢了……有什么方法可以做到吗?我已经尝试过先进行匹配,但这同样慢,如下所示:
Match rgx = Regex.Match(allXml, "(.*)<script type='text/javascript'>.+?</script>(.*)");
if (rgx.Success)
allXml = Regex.Replace(allXml,"(.*)<script type='text/javascript'>.+?</script>(.*)","$1$2");
【问题讨论】:
-
allXml的大小是多少? -
这工作正常,你没有
type="text/javascript"(双引号)?或空格。 -
尝试了解您从 web 获取的代码。它实际上做了什么。这样,您将清楚自己实际在做什么。在这里你正在寻找
(everything)Javascript(everything)当然,考虑到正则表达式搜索技术的性质,这需要时间。 -
我建议您搜索脚本块并将其替换为不会影响您的代码的内容。例如空白注释或换行符。
-
第一个
(.*)是罪魁祸首,使用Regex.Replace(allXml, "(?s)<script type='text/javascript'>.*?</script>", "")。但最好的方法是使用 HTML 解析器,例如 HtmlAgilityPack。
标签: regex rss feed xmlreader rss-reader