匹配以下代码中<FONT id=Zoom>........</FONT>之间的内容,因为中间有多个font标签,所以需要成对匹配,其实<FONT id=Zoom>........</FONT>之间的内容就是新闻内容,所以存在不确定的HTML标签个数。谢各位高人帮忙!谢谢!
1 ...... 2 <TR> 3 <td width="5%"></td> 4 <td style="......" vAlign=top width="90%"> 5 <FONT id=Zoom> 6 ........
7 <p><span><FONT style="FONT-SIZE: 10.5pt">这里是文字内容1。。。。。</FONT></SPAN></p> 8 <p><Font styel=".....">这里是文字内容2。。。。</Font></p> 9 <div style="....."><font sytle=".....">这里是文字3。。。。</font></div> 10 ........ 11 </FONT> 12 </td> 13 </TR> 14 ......
可以了解一下平衡组,如果html本身比较规范的话(例如开始标记和结束标记是一一对应的)
http://deerchao.net/tutorials/regex/regex.htm#balancedgroup
平衡组我看过,但是ASP不支持命名分组,看来我得需要找其他方法了。
@whb1573: 是的,平衡组只能用在。NET里面
<font[^>]*>((?!font).)*</font>
这个不行
@whb1573: 可以取出啊 怎么不行
@Yu: 在实际的应用当中取不出来,我只是贴了主要框架代码,实际在页面源代码中有很多font。我只想取出<font id=zoom>...</font>之间的内容。
@whb1573: 那你可以先取出
<font id=zoom>...</font>
再用上面的表达式
<(?<HtmlTag>[\w]+)[^>]*\sid=(?<Quote>["']?)Zoom(?(Quote)\k<Quote>)["']?[^>]*>(((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*)</\k<HtmlTag>>
这个绝对可以,我的爬虫就是用这个。