正则表达式不包括特定字符

时间:2018-01-29 08:19:38

标签: regex

我想知道是否可以排除字符或跳过更具体的内容,如果它们存在则跳过它们。我有JSON文件,如:

{
  "key1": "value1",
  "key2": "value2",
  "array1": [
    {
      "key3":"value3",
      "key4":"value4"
    },
    {
      "key5":"value5",
      "key6":"value6"
    },
    {
      "key7":"value7",
      "key8":"value8"
    }
  ]
}

我希望在正则表达式中获得输出:

{"key3":"value3","key4":"value4"}
{"key5":"value5","key6":"value6"}
{"key7":"value7","key8":"value8"}

我的正则表达式的第一个版本是:

"array1":\[(\{[A-za-z0-9%,:."]+})+

我不知道如果它存在,如何跳过“,”字符。 为了简化它,我使用没有空格的JSON:

{"key1":"value1","key2":"value2","array1":[{"key3":"value3","key4":"value4"},{"key5":"value5","key6":"value6"},{"key7":"value7","key8":"value8"}]}

所以我不知道是否可以用正则表达式做我想做的事情,或者我应该返回array1并使用例如java来处理它以拆分为字符串。

2 个答案:

答案 0 :(得分:0)

尝试替换不需要的字符:



str = '{"key1":"value1","key2":"value2","array1":[{"key3":"value3","key4":"value4"},{"key5":"value5","key6":"value6"},{"key7":"value7","key8":"value8"}]}';
str = str.split('[');
newStr = str[1].replace(/},/g, '}\n').replace('}]', '');
console.log(newStr);




答案 1 :(得分:0)

正则表达式不是这项工作的最佳工具。

对JSON进行解码并对数据进行操作的简单PHP脚本始终生成正确的结果,并且还能够检测到无效的输入:

$json = << END
{
  "key1": "value1",
  "key2": "value2",
  "array1": [
    {
      "key3":"value3",
      "key4":"value4"
    },
    {
      "key5":"value5",
      "key6":"value6"
    },
    {
      "key7":"value7",
      "key8":"value8"
    }
  ]
}
END;

$data = json_decode($json, TRUE);
foreach ($data['array1'] as $value) {
     echo json_encode($value), "\n";
}

验证不包含在上面的代码中,但可以通过检查json_encode()针对NULL返回的值轻松添加。