Java中的替换模式

Java中的替换模式,java,regex,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

我有以下案文:

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;
如何替换给定的文本,但仍保留括号中的数字


非常感谢您

您需要将
[…]
中找到的号码放置在单独的组中,并通过
$id
使用该组中的匹配项替换,其中
id
表示该组的号码

使用


您需要将在
[…]
中找到的编号放在单独的组中,并通过
$id
使用该组中的匹配项替换,其中
id
表示该组的编号

使用


你可以用括号捕捉数字并在替换中使用,我想你可以用括号捕捉数字并在替换中使用,我想就是这样!我用了更复杂的方法:“(@@MyText\[)(\\d*)(\])”,然后使用$2,但我更喜欢您的解决方案。非常感谢。就这样!我用了更复杂的方法:“(@@MyText\[)(\\d*)(\])”,然后使用$2,但我更喜欢您的解决方案。非常感谢。
replaceAll("@@MyText\\[(\\d+)\\]",       "my/url/$1")
//                     ^^^^^^ group 1            ^^ part matched by group 1