用Java替换模式

时间:2014-06-10 16:18:38

标签: java regex

我有以下文字:

String text = "lorem ipsum @@MyText[1] lorem ipsum @@MyText[22]";

我希望将其替换为:

String text = "lorem ipsum /my/url/1 lorem ipsum /my/url/22;

我做了以下事情:

String newText = text.replaceAll("@@MyText\\[\\d*\\]", "/my/url/%s");

但是这样我得到了:

"lorem ipsum /my/url/%s lorem ipsum /my/url/%s;

我怎样才能替换给定的文本,但仍然保留括号中的数字?

非常感谢您提前

1 个答案:

答案 0 :(得分:4)

您需要将[...]中的号码放在单独的群组中,并通过$id替换该群组中的匹配,其中id代表该群组的号码。

使用

replaceAll("@@MyText\\[(\\d+)\\]",       "my/url/$1")
//                     ^^^^^^ group 1            ^^ part matched by group 1