我想使用regexp替换后引用 如果目标字符串类似于:
"$1 123"
每件事都很好。 但如果我想要一个目标字符串,如:
"$1123"
它不会工作。
在perl中,您可以使用
"${1}123"
要区分后面的引用和相邻的数字 - 是否有java等价物?
修改
如果有格式的时间戳
YYYYMMDDHHMMSS
像:
20130811123000
我希望重置小时,分钟和秒来获取
20130811000000
我想做的是
String newstring = timestamp.replaceFirst("(\\d{8}))\\d{6}","${1}000000");
答案 0 :(得分:2)
您需要将替换指定为:
"$1\\123"
答案 1 :(得分:1)
答案 2 :(得分:1)
这似乎逃脱了。
查看此案例:
String input = "abcd";
System.out.println(input.replaceAll("(a)bcd(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?", "$1123"));
System.out.println(input.replaceAll("(a)bcd(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?", "$1\\123"));
输出:
23
a123
在这种情况下,我在反向引用的组1和反向引用的组11之间存在歧义。 在第一次打印中,我没有逃避反向引用,因此第11组很可能被解释,并且它是空的。 在第二次印刷中,我在反向引用第1组后逃避替换。