Java - 正则表达式字符串替换

时间:2014-11-17 10:13:55

标签: java regex

我想用Regex替换String的某些部分。它是我要替换的字符串的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替换为ThisNeedsToBeReplaced一切正常。所以我的猜测是我想用来替换部分原始字符串(met)的字符串有问题。

我收到的错误是Illegal group reference

有没有人知道${.now?string(\"ddHHmm\")}Z有什么问题?

1 个答案:

答案 0 :(得分:3)

您需要使用:

met = met.replaceAll("\\b\\d{6}Z\\b", "\\${.now?string(\"ddHHmm\")}Z");
  • 192001Z匹配的正确正则表达式为\b\d{6}Z\b
  • 您还需要替换$替换它,否则它被视为后退参考,例如$1, $2 etx。