使用Java正则表达式获取包含在“ $ {VALUE}”中的字符串的正则表达式会引发异常
public static void main(String[] args) {
String test = "Report for ${PROCESS_NAME} with status ${PROCESS_STATUS}";
String[] results = test.split("\\${([^\\{\\}]*)\\}");
for (String result : results) {
System.err.println(result);
}
}
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 1
\${([^\{\}]*)\}
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.closure(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
预期的数组:结果= PROCESS_NAME,PROCESS_STATUS;
输入的测试字符串不是固定长度。正则表达式有什么问题。
我建议这个解决方案
Matcher m = Pattern.compile("\\$\\{(.+?)\\}").matcher(test);
while(m.find()) {
System.out.println(m.group(1));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句