zoukankan      html  css  js  c++  java
  • 用正则表达式匹配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>

    结果:

    >新浪<

    >中国娱乐网<

    >四川在线<

    >车神榜<

  • 相关阅读:
    新浪微盘又是一个给力的产品啊,
    InfoQ: 百度数据库架构演变与设计
    列式数据库——Sybase IQ
    MapR初体验 淘宝共享数据平台 tbdata.org
    IBM正式发布新一代zEnterprise大型机(组图) 大型机,IBM,BladeCenter,美国,纽约 TechWeb News
    1TB is equal to the number of how many GB? 1PB equal to is equal to the number of TB? 1EB PB? | PCfault.com
    Cassandra vs HBase | WhyNosql
    The Hadoop Community Effect
    雅虎剥离开源软件平台 Hadoop ,与风投新建 Hortonworks 公司 品味雅虎
    RowOriented Database 、ColumnOriented Database 、KeyValue Store Database 、DocumentOriented Database
  • 原文地址:https://www.cnblogs.com/net515/p/2849310.html
Copyright © 2011-2022 走看看