Java replaceAll使用找到的模式替换

时间:2013-02-26 20:23:46

标签: java regex

我想用定义的URL替换HTML页面上的所有链接以及查询字符串中的原始链接。

以下是一个例子:

"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 个答案:

答案 0 :(得分:2)

类似

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

$ 0是对正则表达式的主捕获组的引用。请参阅Matcher.appendReplacement

的文档

对于有价值的正则表达式,您可以从here中选择

答案 1 :(得分: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);
}

我没有测试任何这个,但它应该让你知道如何处理它