日期:2014-05-18  浏览次数:20816 次

急!! 正则表达式过滤html
请问各位高手,我想用正则表达式找到html指定的标签,然后过滤掉标签,用string保存其中间的文本内容。  
找了很多质料,就是没找到一个合适的,请帮忙指点一下。  
例如:  
<table   border=0   cellpadding=0   cellspacing=0   width=600   height=120>  
<tr> <td   height=10   colspan=2> </td> </tr>  
<tr>  

<td   width=300   valign=top>  
<table   border=0   cellpadding=0   cellspacing=0   width=280>  
<tr> <td   height=10> </td> </tr>  
<tr> <td   align=right> <font   color=#0d3cd4> 中央气象台2007年03月29日20时发布 </font> </td> </tr>  
<tr> <td   height=10> </td> </tr>  
<tr> <td   align=center> <font   color=#0d3cd4>   -2℃   ~   11℃ </font> </td> </tr>  
<tr> <td   height=10> </td> </tr>  
<tr> <td   align=center> <font   color=#0d3cd4> 多云 </font> </td> </tr>  
</table>  
</td>  
把代码中的“多云”,“-2℃   ~   11℃”抽出来,分别保存到string变量中

------解决方案--------------------
String ss = " <font color=#0d3cd4> 中央气象台2007年03月29日20时发布 </font> </td> </tr> "+
" <tr> <td height=10> </td> </tr> <tr> <td align=center> "+
" <font color=#0d3cd4> -2℃ ~ 11℃ </font> </td> </tr> "+
" <tr> <td height=10> </td> </tr> <tr> <td align=center> "+
" <font color=#0d3cd4> 多云 </font> ";
String regex = " <font.*?> (.*?) </font> .*? <font.*?> (.*?) </font> .*? <font.*?> (.*?) </font> ";
Pattern p = Pattern.compile(regex,Pattern.DOTALL + Pattern.MULTILINE);
Matcher m = p.matcher(ss);
if (m.find()){
String s1 = m.group(1);
String s2 = m.group(2);
String s3 = m.group(3);

System.out.println( "s1 = " + s1);
System.out.println( "s2 = " + s2);
System.out.println( "s3 = " + s3);
}
------解决方案--------------------
有公共的天气web services调用就可以了,何必这么麻烦呢?
------解决方案--------------------
String noHtmlContent = content.replaceAll( " <[^> ]*> ", " ");
------解决方案--------------------
还是楼上的比较精简
------解决方案--------------------
调用webservice吧,这样不是办法,对方网页稍微有点改动你就完蛋了,重新写