gpt4 book ai didi

java - 解析 key : value pair with regular expressions

转载 作者:行者123 更新时间:2023-12-02 03:48:10 25 4
gpt4 key购买 nike

我有一个服务,我点击的服务以以下格式返回响应key: value,我想从中提取键/值对并将其加载到 map 中。

state: UP flag: 9 time: 02:29:09.111782 highest_id: num_users: 0 num_records: 0

所以我使用正则表达式来解析它并从中提取键/值对。

private static final Pattern PATTERN = Pattern.compile("\\s*(\\S+)\\s*:\\s*(\\S+)");

String response = restTemplate.getForObject(url, String.class);
Matcher m = PATTERN.matcher(response);
while (m.find()) {
String key = m.group(1).trim();
String value = m.group(2).trim();
// load key/value in a map
}

现在,上述正则表达式的问题在于上述数据 - 它以 highest_id 作为键,但以 num_users: 0 作为值,这是错误的。在这种情况下,它应该采用 highest_id 作为键,值应该为空字符串或 null,因为该键的 : 之后没有任何内容,并且下一个键应该是 num_users 且值应为 0

我的正则表达式有什么问题?

最佳答案

您可以尝试使用单词边界和负向前瞻的正则表达式:

(\w+):\s(\S*\b(?!:))

在 Java 中:

Pattern p = Pattern.compile("(\\w+):\\s(\\S*\\b(?!:))");

\b (字边界)和负前瞻 (?!:) 是为了确保您不会将下一个键匹配为当前键的空值。

RegEx Demo

关于java - 解析 key : value pair with regular expressions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36141339/

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