【发布时间】:2011-01-31 12:33:19
【问题描述】:
我想在 html 文档中匹配并捕获 所有现有(如果有) <style...</style> 块和 一个 <body..</body> 块的内部。
我认为这很简单,但我遇到了一些奇怪的事情。
这是我对整个正则表达式的猜测:
/(<style[\s\S]+<\/style>)*[\s\S]*<body.*>([\s\S]+)<\/body>/i
结果一无所获。所以我把它拆开,这些部分工作:
/(<body.*>([\s\S]+)<\/body>)/i
/(<style[\s\S]+<\/style>)/i
最奇怪的第一行也有效,而第二行结果为空!
/(<style[\s\S]+<\/style>)+/i
/(<style[\s\S]+<\/style>)*/i
所以,我猜错误是子模式后 * 和 + 之间的区别。为什么?我该如何解决这个问题?
谢谢!!
【问题讨论】: