相关疑难解决方法(0)

正则表达式替换为匹配计数

我想用匹配的数字/索引替换匹配.

在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"


注意:我正在寻找可以执行此操作的替换字符串(如果存在).


请不要提供涉及循环或类似代码的答案.


编辑:

我会接受最优雅的答案(即使它使用循环).目前没有答案
实际工作.

java regex

18
推荐指数
2
解决办法
5475
查看次数

IllegalArgumentException:replaceFirst 时非法组引用

我试图替换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. 为什么?

java regex

3
推荐指数
1
解决办法
6739
查看次数

标签 统计

java ×2

regex ×2