PHP Regex Negative Lookahead с вводом

1

Я пытаюсь очистить файл.JSON, однако возвращенный файл возвращает несколько объектов JSON в 1.json файле, что приводит к недопустимому json файлу. Я пытаюсь решить эту проблему, добавив [перед файлом JSON и a] после json файла. Затем с помощью регулярного выражения добавить запятую в нужные места.

Это файл перед регулярным выражением

[{"status":"success"}

{"values":{"cpu":26.5152886753948387,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"}

{"values":{"cpu":25.5839236550189568,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"}

]

Я создал следующее regex: }(?!\s,|\s]). Проблема заключается в том, что она по-прежнему добавляет a, после последнего}, даже если за ней следует].

Что я получаю:

[{"status":"success"},

{"values":{"cpu":26.5152886753948387,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"},

{"values":{"cpu":25.5839236550189568,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"},

]

Ожидаемый результат:

[{"status":"success"},

{"values":{"cpu":26.5152886753948387,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"},

{"values":{"cpu":25.5839236550189568,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"}

]
Теги:

1 ответ

1
Лучший ответ

Замените \s в вашем регулярном выражении с помощью \s* так как \s будет соответствовать одиночному символу пробела, где \s* будет соответствовать нулю или больше символов пробела.

}(?!\s*[,\]])

DEMO

$re = "/}(?!\\s*[,\\]])/m";
$str = "[{\"status\":\"success\"}\n\n{\"values\":{\"cpu\":26.5152886753948387,\"ram\":0.8452846061135513},\"origin\":\"core\",\"type\":-1,\"uuid\":\"0000-e8-de-27-176d10\"}\n\n{\"values\":{\"cpu\":25.5839236550189568,\"ram\":0.8452846061135513},\"origin\":\"core\",\"type\":-1,\"uuid\":\"0000-e8-de-27-176d10\"}\n\n]";
$subst = "},";
$result = preg_replace($re, $subst, $str);
  • 1
    Спасибо, это именно то, где я искал!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню