java - 匹配多个括号之间的字符串

标签 java regex json

我有一个很长的 JSON 字符串。我想过滤它并只获取第一个括号之间的数据。问题是,我有许多其他括号,因此我的正则表达式模式无法正常工作。

这是 JSON 字符串:

    String jsondata = "["
    +"{"
      +  "test: 63453645"
        +"date: 2016-07-17"
       "{"
        + "id:534534"
        +"}"
      + "blank : null"
      + "flags : null"
     + "}"
    +"{"
      +  "test: 543564236"
        +"date: 2014-07-17"
        +"{"
        + "id:6532465"
        +"}"
      + "blank : null"
      + "flags : null"
    + "}"
    +"]";

    pattern = "\\{[^{}]*\\}";
    pr = Pattern.compile(pattern);  
    math = pr.matcher(jsondata);
    if (math.find()) {
        System.out.println(math.group());
    }
    else
        System.out.println("nomatch");

我的模式的问题是它只打印到 id: 之后的第一个 },但我希望它在最后一个 } 位于 flags: null 之后。

我只想打印第一个匹配项,即不是后面的字符串,因为它们也以相同的字符开始和结束,这就是为什么我有一个 if 语句而不是 while 循环。

有什么建议吗?谢谢!

具有多个括号的正则表达式似乎是一项非常困难的任务。我可以匹配最后一个字符串吗?从 { 开始到 flags : null?

最佳答案

正如我在评论中所说, 我通常使用 JSON-Simple 。 很棒的教程,decoding .

看起来有点像:

JSONObject obj = JSONValue.parse(jsondata);
obj.get("test");
PS。 我确实在您的 json 数据中看到了一些错误,请使用 jsonlint验证您的 json 格式是否正确...

关于java - 匹配多个括号之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30172086/

相关文章:

ios - 显示我从 JSON 获得的数据

javascript - jQuery $.parseJSON 数据到 HTML

java - 通过instanceof使用数组的元素

java - 自动从appium获取设备参数

java - 刷新jTable

正则表达式查找任何后跟冒号的大写单词

java - 无法理解在 Java 中调整 ArrayList 大小时溢出的可能性

python - 简单的 CSV 词法分析器

javascript - 使用子字符串 javascript 获取与字符串的匹配

json - Play Framework : type mismatch JsValue/JsValueWrapper