我想用匹配的数字/索引替换匹配.
在java正则表达式中有没有办法知道当前匹配的是哪个匹配号,所以我可以使用String.replaceAll(regex, replacement)?
示例:替换[A-Z]为自身及其索引:
Input: fooXbarYfooZ
Output: fooX1barY2fooZ3
Run Code Online (Sandbox Code Playgroud)
即,这个电话:
"fooXbarXfooX".replaceAll("[A-Z]", "$0<some reference to the match count>");
Run Code Online (Sandbox Code Playgroud)
应该回来 "fooX1barY2fooZ3"
注意:我正在寻找可以执行此操作的替换字符串(如果存在).
请不要提供涉及循环或类似代码的答案.
我会接受最优雅的答案(即使它使用循环).目前没有答案
实际工作.
我试图替换String匹配我的正则表达式的第一次出现,同时像这样迭代这些出现:
(这段代码非常简化,所以不要试图找到一些更大的意义)
Matcher tagsMatcher = Pattern.compile("\\{[sdf]\\}").matcher(value);
int i = 0;
while (tagsMatcher.find()) {
value = value.replaceFirst("\\{[sdf]\\}", "%" + i + "$s");
i++;
}
Run Code Online (Sandbox Code Playgroud)
我正在IllegalArgumentException: Illegal group reference执行replaceFirst. 为什么?