我有以下字符串:
{"asdasdasdsd"["$[day()]$"],"asdasd":"$[time()]$","day":"$[day()]$","asdasdasd":["$[random(4,5)]$"]}
我想在前缀和后缀中加入字符串。 问题是String不是空格,所以我只得到一个组:
private String prefix = "\\$\\["; //$[
private String suffix = "\\]\\$"; //]$
private String regexString = prefix + ".*" + suffix;
try {
Pattern regex = Pattern.compile(regexString);
Matcher regexMatcher = regex.matcher(json);
while (regexMatcher.find()) {
System.out.println(regexMatcher.start()+ ": " + regexMatcher.group());
for (int i = 1; i <= regexMatcher.groupCount(); i++) {
System.out.println(regexMatcher.group(i));
System.out.println(regexMatcher.start(i));
System.out.println(regexMatcher.end(i));
}
}
} catch (PatternSyntaxException ex) {
ex.printStackTrace();
}
输出是:
17: $[day()]$"],"asdasd":"$[time()]$","day":"$[day()]$","asdasdasd":["$[random(4,5)]$
我希望输出为:
day()
time()
day()
random(4,5)
我该如何处理?
答案 0 :(得分:1)
没有群组,因为您的模式中没有(...)
。
.*
也无法正常使用,因为您希望与.*?
进行非贪婪匹配。
改变这个:
String regexString = prefix + ".*" + suffix;
对此:
String regexString = prefix + "(.*?)" + suffix;
在任何情况下,使用JSON解析库比使用正则表达式更好。