【发布时间】:2010-08-12 12:54:32
【问题描述】:
我不太了解正则表达式,我正在尝试从一些提取的页面文本中获取所有脚本标签。我尝试了以下模式:
<script.*?>.*?</script>
但这似乎没有返回任何包含任何代码的脚本标记。 IE。它来自以下:
<script type="text/javascript" src="Scripts/Scipt1.js"></script>
<script type="text/javascript" src="Scripts/Scipt2.js"></script>
<script type="text/javascript">
function SomeMethod()
{
}
</script>
我只会得到以下结果:
<script type="text/javascript" src="Scripts/Scipt1.js"></script>
<script type="text/javascript" src="Scripts/Scipt2.js"></script>
如何退回全部 3 个? (注意。我确实想在结果中保留外部脚本标签)。
【问题讨论】:
-
使用 XML 解析器。每次使用 Regex 解析 XML 时,上帝都会杀死一只小猫。
-
请don't。使用 XML 解析器。
-
你不能用正则表达式可靠地做到这一点,正如这里多次所说的那样,HTML 不是正则语言,因此不能用正则表达式解析。你需要一个 HTML 解析器。
-
为了证明这个事实,你的正则表达式会杀死太多这样的:
<!-- <script> needs a type attribute --><p>Some text here.</p><script></script> -
@Robin Day:您的两个示例(
<script ... />和在脚本中使用</script>)都是无效的 HTML 4.01。