![](/img/trans.png)
[英]Replace strings using regular expressions and backreferences in Clojure
[英]Using backreferences in java regular expressions adjacent to digits
我想使用带有正向引用的regexp替换如果目标字符串如下所示:
"$1 123"
一切正常。 但是如果我想要一个目标字符串,例如:
"$1123"
它不会工作。
在perl中,您可以使用
"${1}123"
为了区分反向引用和相邻数字-是否存在Java等效项?
编辑
如果具有以下格式的时间戳记
YYYYMMDDHHMMSS
喜欢:
20130811123000
我想重设小时,分钟和秒以获取
20130811000000
我想做的是
String newstring = timestamp.replaceFirst("(\\d{8}))\\d{6}","${1}000000");
您需要将替换指定为:
"$1\\123"
看来逃脱工程。
看到这种情况:
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组后,我避免了替换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.