Java-Regex字符串替换
我想用正则表达式替换字符串的某些部分。这是我要替换的字符串的Java-Regex字符串替换,java,regex,Java,Regex,我想用正则表达式替换字符串的某些部分。这是我要替换的字符串的192001Z部分 代码: String met = "192001Z 17006KT 150V210 CAVOK 11/07 Q1004 NOSIG"; String regexZ = "[0-9].{5}Z"; met = met.replaceAll(regexZ, "${.now?string(\"ddHHmm\")}Z"); 当我想用${.now?String(\“ddHHmm\”)Z替换字符串的一部分时,我遇到了一个错误
192001Z
部分
代码:
String met = "192001Z 17006KT 150V210 CAVOK 11/07 Q1004 NOSIG";
String regexZ = "[0-9].{5}Z";
met = met.replaceAll(regexZ, "${.now?string(\"ddHHmm\")}Z");
当我想用${.now?String(\“ddHHmm\”)Z
替换字符串的一部分时,我遇到了一个错误
但是当我例如用替换${.now?string(\'ddHHmm\”)Z
时,这需要被替换掉
一切正常。所以我猜我想用来替换原始字符串(met)的部分的字符串有问题
我收到的错误是非法组引用
有人知道${.now?string(\'ddHHmm\”)Z有什么问题吗?您需要使用:
met = met.replaceAll("\\b\\d{6}Z\\b", "\\${.now?string(\"ddHHmm\")}Z");
- 更正正则表达式以匹配
192001Z
is\b\d{6}Z\b
- 您还需要在替换时转义
$
,否则它将被视为反向引用,例如$1,$2
etx
也应该转义吗?是的,转义$
就可以了。@marounnaroun:DOT在替换中没有特殊意义,但是$
确实有。转义$就可以了!谢谢