Java正則表示式:讓分組group()代替replaceAll吧!
阿新 • • 發佈:2019-02-18
今天,在論壇回覆貼子時,無意中進一步學到了分組的用法。
在之前幾個抓取網頁並分析獲得標題和超連結的時候,為了去除標題和超連結中多餘的字串,我都是使用
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
while(mt.find())
{
String LRCurl=mt.group().replaceAll("LRC歌詞來自:|</a>","");
System.out.println("您需要的網址為:"+LRCurl);
}
}
}
這是當時寫的程式碼。現在運用分組寫個更簡潔的程式碼:
package test1;import java.util.regex.Matcher;
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學習就是要多看、多思、多練。
一天進步一點,有時靈感一來,收穫的可能就是一大片了.