2013-02-26 67 views
1

我想用定義的URL替換HTML頁面上的所有鏈接以及查詢字符串中的原始鏈接。Java替換全部使用找到的替換模式

下面是一個例子:

"http://www.ex.com abc http://www.anotherex.com" 

應改爲:

"http://www.newex.com?old=http://www.ex.com ABC http://www.newex.com?old=http://www.anotherex.com" 

我想過使用的replaceAll,但我不知道究竟如何重用在更換正則表達式。

回答

2

的想法
String processed = yourString.replaceAll([ugly url regexp],"http://www.newex.com?old=$0") 

$ 0是對正則表達式的主捕捉組的引用。看到Matcher.appendReplacement

的文檔,值得正則表達式,你可以有你挑從here例如

+0

謝謝,那就是我在找的東西 – 2013-02-26 20:33:14

1

我會去這樣做是這樣的:

List<String> allMatches = new ArrayList<String>(); 
Matcher m = Pattern.compile("regex here") 
    .matcher(StringHere); 
while (m.find()) { 
allMatches.add(m.group()); 
} 

for(String myMatch : allMatches) 
{ 
    finalString = OriginalString.replace(myMatch, myNewString+myMatch); 
} 

我沒有測試任何這一點,但它應該給你如何對待它

+0

與string.replace()替換另一個字符給定的人物出現的所有 - 你很可能瞄準的replaceAll/replaceFirst ?此外,字符串是不可變的,String.replace *()不會改變它被調用的字符串,而是返回一個新的字符串。 – radai 2013-02-26 20:40:41

+0

除非我誤解了這個問題,因爲我正在遍歷正則表達式中的每個匹配項,所以.replace()應該正確地替換每個項目。雖然保存替換回報的好點。我更新了我的代碼以反映這一點。無論哪種方式,您的解決方案更加靈活/快捷,應該成爲選定的答案! – 2013-02-26 20:49:53