Java确实有这个功能,感谢您的回答,对我而言,对API的关注太可惜了......
例如:
String strOriginal = "A:B&C@D";
我认为在java中应该有一个非常好的方法来改变它:
String strNew = NewReplaceAll("(.*?)\\:(.*?)&(.*?)@(.*?)","\4_\3^\2(\1\2\2\1)");
这可以得到如下结果:
AssertTrue(strNew.equalsWith("D_C^B(ABBA)") );
答案 0 :(得分:3)
我认为你工作的印象是第二个String
参数不会重新引用。
确实如此。
例如:
System.out.println("foo123".replaceAll("foo(.+)", "baz$1"));
输出:
baz123
答案 1 :(得分:1)
它 接受正则表达式作为替换,但它使用“美元”表示法(而不是“反斜杠”表示法)作为反向引用。
所以你的例子应该是:
String strNew = str.replaceAll("(.*?)\\:(.*?)&(.*?)@(.*?)","$4_$3^$2($1$2$2$1)");
请注意,捕获的组1称为$1
,而不是\1
等。