@W2nn3ss

Как удалить часть строки через регулярное выражение?

Получаю данные из файла логирования, выглядят данные подобным образом:
[2023-03-14 16:08:42] local.INFO:  {"id":"test","object":"object","date":"date"}
[2023-03-14 16:19:04] local.INFO:  {"id":"test","object":"object","date":"date"}

Теперь мне необходимо взять массив из каждой строки и засунуть его в обычный многомерный массив. Но у меня никак не получается написать регулярное выражение, которое будет удалять из строки все, кроме этого самого массива:
[2023-03-14 16:08:42] local.INFO:
Чтобы получилось вот так:
{"id":"test","object":"object","date":"date"}
{"id":"test","object":"object","date":"date"}

Моя регулярка пока выглядит вот так:
([0-9^:^\s^local^.^INFO^[^\]^-])
И она удаляет часть символов в самом массиве, а так же все двоеточия.
Подскажите пожалуйста, как правильно написать регулярное выражение, чтобы оставить данные так как мне нужно.
  • Вопрос задан
  • 373 просмотра
Пригласить эксперта
Ответы на вопрос 4
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
$str = '[2023-03-14 16:08:42] local.INFO:  {"id":"test","object":"object","date":"date"}';

preg_match('@[^{]+({.+})@', $str, $m);

$jsonstr = $m[1];

var_dump(json_decode($jsonstr, 1));


https://phpize.online/sql/mysql57/undefined/php/ph...
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
https://www.php.net/manual/ru/function.substr.php
https://www.php.net/manual/en/function.strpos.php

это не говоря о том что strpos скорее всего всегда один и тот же
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Вот эта колбаса
[2023-03-14 16:08:42] local.INFO:
имеет длину 36 символов кажется. И если ее просто отрезать слева от строк лога то будет то что надо.
subsr или subsrring.
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
$log_str = substr($log_str, 35);

Но если всё равно хочется именно RegExp:
$log_str = preg_replace("/^\[[^\]]+\]\s+[^\s]+\s+/s", "", $log_str);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы