gpt4 book ai didi

java - 正则表达式没有给出所需的输出

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

我正在使用正则表达式 - [{]{[}][}] 作为输入 {{id}}我期望的输出是id。但我得到了{{id}}

我的java代码如下:

  String string = "\"{\n" +
" \"id\": {{dsm_id}},\n" +
" \"title\": \"Automation Test\",\n" +
" \"code\": \"aut_test\",\n" +
" \"companyId\": 286,\n" +
" \"enabled\": true,\n" +
" \"enableAdvanceFilter\": false,\n" +
" \"deleteAfterScheduledTime\": false,\n" +
" \"enableDataStoreLog\": false\n" +
"}\"";
String patternString = "[{][{](.*)[}][}]";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(string);
List<String> allMatches = new ArrayList<String>();
while (matcher.find()) {
allMatches.add(matcher.group());
}
System.out.println(allMatches);

我需要的唯一解决方案是拥有正确的正则表达式。我在这里无法使用或不想使用 DTO 或 Json 解析器。

最佳答案

您错误地使用了模式组。试试这个:

String patternString = "[{][{](?<id>.*)[}][}]";
// String patternString = "\\{\\{(?<id>[^}]+)}}";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(string);
List<String> allMatches = new ArrayList<>();
while (matcher.find()) {
allMatches.add(matcher.group("id"));
}

如果您不想使用 name group :

String patternString = "[{][{](.*)[}][}]";
//String patternString = "\\{\\{([^}]+)}}";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(string);
List<String> allMatches = new ArrayList<>();
while (matcher.find()) {
allMatches.add(matcher.group(1));
}

但我建议您使用另一种方法:使用例如Jackson 将此 JSON 转换为 Map<String, Object>并检索所需字段。

关于java - 正则表达式没有给出所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60313978/

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