1. 程式人生 > >Java正則表示式:讓分組group()代替replaceAll吧!

Java正則表示式:讓分組group()代替replaceAll吧!

今天,在論壇回覆貼子時,無意中進一步學到了分組的用法。

在之前幾個抓取網頁並分析獲得標題和超連結的時候,為了去除標題和超連結中多餘的字串,我都是使用

String方法中的replaceAll. 現在掌握了這個分組,完全可以在獲取所需內容時就遮蔽了多餘的字串。

下面用例子說話吧!

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


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

publicclass Test 
{
 
 
publicstaticvoid 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;

publicclass Test6 
{
 
 
publicstaticvoid 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);
             
        }
 }
 
}

上面這個程式很小,可能看不出什麼優勢。

Java學習就是要多看、多思、多練。

一天進步一點,有時靈感一來,收穫的可能就是一大片了.