在与数字相邻的java正则表达式中使用反向引用
我想用regexp替换回引用 如果目标字符串类似于:在与数字相邻的java正则表达式中使用反向引用,java,regex,Java,Regex,我想用regexp替换回引用 如果目标字符串类似于: "$1 123" 一切正常。 但是如果我想要一个目标字符串,比如: "$1123" 这行不通 在perl中,可以使用 "${1}123" 要区分后面的引用和相邻的数字,是否有java等价物 编辑 如果有格式的时间戳 YYYYMMDDHHMMSS 比如: 我想重新设置小时、分钟和秒数,以便 20130811000000 我想做的是 String newstring = timestamp.replaceFirst("(\\d{8}))
"$1 123"
一切正常。
但是如果我想要一个目标字符串,比如:
"$1123"
这行不通
在perl中,可以使用
"${1}123"
要区分后面的引用和相邻的数字,是否有java等价物
编辑
如果有格式的时间戳
YYYYMMDDHHMMSS
比如:
我想重新设置小时、分钟和秒数,以便
20130811000000
我想做的是
String newstring = timestamp.replaceFirst("(\\d{8}))\\d{6}","${1}000000");
$12
将引用第12组(如果存在),或第1组(如果反向引用少于12个)
因此,在$1123
$1
中,如果只捕获了一个组,$11
如果捕获了11个以上的组,依此类推
$12
将引用第12组(如果存在),或引用第1组(如果反向引用少于12个)
因此,在$1123
$1
中,如果只捕获了一个组,$11
如果捕获了11个以上的组,依此类推
您需要将替换指定为:
"$1\\123"
您需要将替换指定为:
"$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组后退出替换 这似乎是一种逃避 见本例:
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组后退出替换 发布您的Java
模式
、输入的字符串
和预期结果。为什么需要regex来完成此操作<代码>字符串newStr=“20130811123000”。子字符串(0,8)+“000000”代码>代码示例中的正则表达式在语法上无效。但除此之外,使用stringnewstring=timestamp.replaceFirst(“(\\d{8})\\d{6},”$1000000“)还有什么不正确的地方代码>?如果正则表达式中的捕获组少于10个,Java将$10
视为“backreference 1,后跟文字0
”。发布您的Java模式
、输入的字符串
和预期结果。为什么需要正则表达式<代码>字符串newStr=“20130811123000”。子字符串(0,8)+“000000”代码>代码示例中的正则表达式在语法上无效。但除此之外,使用stringnewstring=timestamp.replaceFirst(“(\\d{8})\\d{6},”$1000000“)还有什么不正确的地方代码>?如果正则表达式中的捕获组少于10个,Java将$10
视为“backreference 1,后跟literal0
”。请参阅正则表达式上的这篇文章,您将找到详细解释和示例。参考这篇关于正则表达式的文章,您将找到详细的解释和示例。