gpt4 book ai didi

Java-正则表达式匹配组-不带空格的字符串

转载 作者:行者123 更新时间:2023-12-01 10:19:38 25 4
gpt4 key购买 nike

我有以下字符串:

{"asdasdasdsd"["$[day()]$"],"asdasd":"$[time()]$","day":"$[day()]$","asdasdasd":["$[random(4,5)]$"]}

我想获取前缀和后缀中的字符串。问题是字符串没有空格,所以我只得到一组:

    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)

我该如何处理这个问题?

最佳答案

没有组,因为您的模式中没有 (...)

.* 也不能很好地工作,因为您想要与 .*? 进行非贪婪匹配。

更改此:

    String regexString =  prefix + ".*" + suffix;

对此:

    String regexString =  prefix + "(.*?)" + suffix;

无论如何,使用 JSON 解析库比正则表达式更好。

关于Java-正则表达式匹配组-不带空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35685293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com