用正则表达式匹配HTML\XML等文件中的标签

测试用HTML源文件:

View Code
<table cellspacing=0 cellpadding=0 border=0 width=100%>
  <tr>
         <td width="145px" valign=top><center>
     <div style="border:1px solid #588acb;padding:1px">    
       <a href="http://game.china.com/online/wmworld/news/11099107/20121226/17602912.html" target="_blank" style="text-decoration:none"><img src="http://news.youdao.com/improxy?w=145&h=109&id=b2cd45d7ccce332b"></a>
     </div>
   </center></td>
      <td valign=top>      <table cellspacing=0 cellpadding=0 border=0 width=98% align=right>
       <tr>
         <td colspan=2 style="padding-top:5px">
           <span id="title0"><a id="hitURL0" href="http://game.china.com/online/wmworld/news/11099107/20121226/17602912.html" target="_blank">《完美世界:天界的召唤》缤纷圣诞总动员</a></span>         
         </td>
       </tr>
       <tr>
         <td colspan=2 style="padding-top:5px">
           <font size="-1"><span style="color:#636563"><nobr>[ 中华网 1小时前]</nobr></span><BR>
           经过了平安夜和圣诞节,节日的气氛被推到了最高点!《完美世界:天界的召唤》为玩家准备了精彩纷呈的圣诞节活动,而玩家也纷纷借着这个特殊的日子,三五成群的举办着各种小聚会,在完美大陆中享受着这个浪漫的圣诞...</font>
         </td>
       </tr>
       <tr>
         <td colspan=2 style="padding-top:10px">         
         <font size="-1">
         <img src="http://news.youdao.com/images/tranpointsymbol.png" 
           border="0" alt="" align=absmiddle><span id="title0"><a id="hitURL0" 
           href="http://www.265g.com/news/gamenews/300073.html" target="_blank">圣诞元旦大狂欢360uu《盛世三国》双蛋大礼齐献映</a></span> <span 
           style="color:#636563"><nobr>[ 265G 1小时前]</nobr></span><br><img src="http://news.youdao.com/images/tranpointsymbol.png" 
           border="0" alt="" align=absmiddle><span id="title0"><a id="hitURL0" 
           href="http://life.qianlong.com/36311/2012/12/26/7144@8406202.htm" target="_blank">贝立兹携手浦南幼儿园举办趣味英语圣诞派对</a></span> <span 
           style="color:#636563"><nobr>[ 千龙新闻网 3小时前]</nobr></span><br></font>         
         <div><img src="http://news.youdao.com/images/tranzhuantisymbol.png" border="0" alt="" align=absmiddle><nobr><font size=-1><a style="color:#008000;" href="top?item=1b620d66539e81dd">查看专题 (780篇新闻 )</a></font></nobr></div>
         </td>
         <td valign=bottom>&nbsp;</td>            
       </tr>
     </table>    </td> 
  </tr>
</table>

一、匹配所有标签

\<.[^<>]*\>

思路:

1、首先匹配<和>,得到"\<.*\>",(\为转义,<和>加不加都可以)但出现多个标签在一组中。

2、排除中间的<和>,表达式改为"\<.[^<>]*\>"。

3、如果想得到不包含属性的所有标签,可以加个字符数限制,根据标签字符数,表达式改为“\<\S[^<>]{0,12}\>”。

二、匹配指定标签

匹配所有DIV标签 \<\bdiv.*\<\/div\b\>

思路:

1、以<div 开头,得到“\<\bdiv”。

2、以<\div>结束,得到“\<\/div\b\>”,\\注意两次\b的使用,\b用于匹配位于词开始处的词边界和用于匹配词结尾处的词边界。

3、连接两个表达式,中间填充任意字符,\<\bdiv.*\<\/div\b\>。

感慨:正则表达式真强大。

 

20130123补充

提取标签中的内容

>.[^<>]+<

<li><a href="http://sports.sina.com.cn"target="_blank">新浪</a></li>
<li><a href="http://news.yule.com.cn"target="_blank">中国娱乐网</a></li>
<li><a href="http://pzh.scol.com.cn"target="_blank">四川在线</a></li>
<li><a href="http://news.0755car.com"target="_blank">车神榜</a></li>

结果:

>新浪<

>中国娱乐网<

>四川在线<

>车神榜<

 

posted @ 2013-01-07 14:50  net515  阅读(12533)  评论(0编辑  收藏  举报