代码之家  ›  专栏  ›  技术社区  ›  Rahul Dev

匹配大括号之间的所有内容-regex

  •  1
  • Rahul Dev  · 技术社区  · 8 年前

    我想分析一下 { 和 }, . 我从stackoverflow中搜索并尝试了许多解决方案,但并不是所有的方法都有效。

    对我来说最好的解决办法是 Extracting all values between curly braces regex php 但是当有嵌套的花括号时它会失败。我试过 {\K[^}]*(?=},) ID:1181不匹配。

    样本数据

    {
        Id: 1180
        Name: "ABCD"
        Type: 1
        Json: <"
            Some sample data
        ">
    },
    {
        Id: 1181
        Name: "EFGH"
        Type: 4
        More: Value
        More: Value
        Json: <"
            Some sample data "{ with more curly braces }" and "{ more curly braces }";
        ">
    },
    {
        Id: 1182
        Name: "IJKL"
        Type: 2
        Json: <"
            Some sample data
        ">
    },
    

    崇高的结果 Result

    2 回复  |  直到 8 年前
        1
  •  1
  •   anubhava    8 年前

    你可以用这个 recursive regex in PHP :

    $regex = '/ { ( (?: [^{}]* | (?R) )* ) } /x';
    

    RegEx Demo

        2
  •  0
  •   Philipp    8 年前

    没有这种格式的规范,就没有解析输入的干净解决方案。使用regex只能部分地帮助您,因为“json”字段中可能有任何实用的东西。

    如果你需要一个快速和肮脏的解决方案,你可以使用的事实,卷发是在线的开始。

    $m = preg_split('~^},$~m', $data);
    

    或

    preg_match_all('/\{.*?^\},$/ms', $str, $matches, PREG_SET_ORDER);
    

    从那里开始,你可以处理你喜欢的数据。

    推荐文章