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>

    结果:

    >新浪<

    >中国娱乐网<

    >四川在线<

    >车神榜<

  • 相关阅读:
    c#与科学计算之一:发掘 C# 特性赋予科学计算项目以威力(转贴)
    我使用使用vs2005的理由
    MapXtrem2004经典代码:asp.net鹰眼
    LaheyFujitsu Fortran v7.1初感受
    .NET平台上的编译器不完全列表(转别)
    iNET:Microsoft.NET的Java实现
    MapXtreme2004 & vs2005的官方回答
    告别一段时间
    MapXtreme2004 连接oracle spatial的问题(已解决)
    手工卸载.Net写的win服务
  • 原文地址:https://www.cnblogs.com/net515/p/2849310.html
Copyright © 2011-2022 走看看