用正则表达式匹配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> </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>
结果:
>新浪<
>中国娱乐网<
>四川在线<
>车神榜<