Java正则表达式:让分组group()代替replaceAll吧!

今天,在论坛回复贴子时,无意中进一步学到了分组的用法。

在之前几个抓取网页并分析获得标题和超链接的时候,为了去除标题和超链接中多余的字符串,我都是使用

String方法中的replaceAll. 现在掌握了这个分组,完全可以在获取所需内容时就屏蔽了多余的字符串。

下面用例子说话吧!

在前段时间,在论坛回复一个关于正则表达式的贴子http://topic.csdn.net/u/20080401/22/71a948f9-e90c-4bf9-aa01-87eed94126c1.html时,我写了这么个代码:

 

/*
在String s中提取下面的字符串:
http://www.92mp3.com/lrc/lrc.asp?ac=down&id=17656&gq=晴天
*/


import  java.util.regex.Matcher;
import  java.util.regex.Pattern;

public   class  Test 
{
 
 
public static void main(String[] args)
 
{
         String s
="<a href="http://www.92mp3.com/lrc/lrc.asp?ac=down&id=17656&gq=晴天" target=_blank>LRC歌词来自:http://www.92mp3.com/lrc/lrc.asp?ac=down&id=17656&gq=晴天  </a>";  
        String regex
="LRC歌词来自:http://.*?</a>";
        Matcher mt
=Pattern.compile(regex).matcher(s);
        
while(mt.find())
        
{
             String LRCurl
=mt.group().replaceAll("LRC歌词来自:|</a>","");
            
             System.out.println(
"您需要的网址为:"+LRCurl);
             
        }

 }

 
}

这是当时写的代码。现在运用分组写个更简洁的代码:

 

package  test1;
import  java.util.regex.Matcher;
import  java.util.regex.Pattern;

public   class  Test6 
{
 
 
public   static   void  main(String[] args)
 {
         String s
= " <a href="http://www.92mp3.com/lrc/lrc.asp?ac=down&id=17656&gq=晴天" target=_blank>LRC歌词来自:http://www.92mp3.com/lrc/lrc.asp?ac=down&id=17656&gq=晴天  </a> " ;  
        String regex
= " LRC歌词来自:(http://.*?)</a> " ;
        Matcher mt
= Pattern.compile(regex).matcher(s); // 此处为改动部分
         while (mt.find())
        {
             String LRCurl
= mt.group( 1 ); // 此处为改动部分
            
             System.out.println(
" 您需要的网址为: " + LRCurl);
             
        }
 }
 
}

 

 

上面这个程序很小,可能看不出什么优势。

但是,实际上我之前写过的几个程序,比如 http://blog.csdn.net/zhuche110/archive/2008/03/31/2232765.aspx,应用上面的策略,完全可以省略1/3的代码,真有一种如释重负的感觉!

Java学习就是要多看、多思、多练。

一天进步一点,有时灵感一来,收获的可能就是一大片了.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值