<style type="text/css">
到</style>
的内容,但由于某种原因,它完全跳过了单独的样式标记块。但它会在最后一个关闭时停止。
这更多的是比信息的需要有点好奇,这应该正常工作,现在因为我可以代替的是具有单一<link>
到外部CSS相匹配。
截至目前,我的RegEx是这样的:
<style((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)>(.*?\r\n)*(</style>)
在第一半,由here,中间位是我挣扎最有,因为我已经忘记了采取\ r \ n和课程的结束标记是逐字。
就像我说的,这很好用,我唯一的疑问就是这段代码:
<style type="text/css">
<!--
#wrapper #content #main2col .modbox tr td {
color: #3366cc;
border-top-style: solid;
border-right-style: solid;
border-bottom-style: solid;
border-left-style: solid;
}
#wrapper #content #main2col .modbox tr td p em {
color: #0a304e;
}
#wrapper #content #main2col .modbox tr td em br {
color: #0a304e;
}
#wrapper #content #main2col .modbox tr td em strong {
color: #0a304e;
}
#wrapper #content #main2col p strong {
color: #0a304e;
}
#wrapper #content #main2col table tr td strong {
color: #0a304e;
}
-->
</style>
<style type="text/css">
<!--
table.modbox {
font-size:9pt;
font-HCMmily:"Calibri", "sans-serif";
border-top-style: solid;
border-right-style: solid;
}
p.modbox {
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:normal;
font-size:11.0pt;
font-HCMmily:"Calibri", "sans-serif";
}
#wrapper #content #main2col .modbox tr .modbox {
color: #09C;
font-style: normal;
}
#wrapper #content #main2col .modbox {
color: #3366cc;
}
#wrapper #content #main2col .modbox {
color: #3a5774;
}
#wrapper #content #main2col .modbox tr .modbox .MsoNormal .modbox {
color: #3a5774;
}
#wrapper #content #main2col .modbox {
color: #3a5774;
}
-->
</style>
<style type="text/css">
<!--
table.MsoTableGrid {
border:solid;
font-size:11.0pt;
font-HCMmily:"Calibri", "sans-serif";
}
p.MsoNormal {
margin-top:0in;
margin-right:0in;
margin-bottom:5pt;
margin-left:0in;
line-height:normal;
font-size:10pt;
font-HCMmily:"Calibri", "sans-serif";
}
-->
</style>
<style type="text/css">
<!--
table.modbox {
font-size:10.0pt;
font-family:"Times New Roman","serif";
}
-->
</style>
仅返回一个匹配项。我试图弄清楚为什么它没有抓住</style>
的第一个标记。为了记录,我尝试添加(\ r \ n)?在关闭标记位之后,但没有区别。
同样,今天是我与RegEx合作的第一天,所以我对此非常陌生,我可能会犯一个非常简单的错误。
谁能解释我做错了什么?非常感谢任何帮助!
答案 0 :(得分:3)
我会说你的正则表达式有贪婪问题。最有可能的是你应该检查你所有的星星(*)和加号(+)以在它们之后添加一个询问标记(?)。像
(.*?\r\n)* => (.*?\r\n)*?
另一方面,想要使用正则表达式解析html / xml是一个坏主意,为什么不使用简单的html解析器并检索标记的内容?