Как правильно написать регулярку?

Доброго времени суток. Есть данные:
{"v": 50, "vd": 5},
 {"v": 51, "vd": 1},
 {"v": 54, "vd": 3},
 {"v": 57, "vd": 3},
 {"v": 60, "vd": 3},
 {"v": 61, "vd": 1},
 {"v": 62, "vd": 1},
 {"v": 63, "vd": 1},
 {"v": 63, "vd": 0},

Я хочу получить из этого строку вида: "50,51,54,57,60,61,62,63,63", то есть только то, что находится в параметре 'v'.
Подскажите пожалуйста, как правильно написать регулярное выражение, чтобы отбросить всё что слева и справа.
Спасибо.
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Регулярные выражения
А вы уверены, что здесь надо использовать регулярные выражения? То, что вы показали, выглядит как огрызок json-массива. Может, вы показали не всё? Если там у вас действительно json-массив, то

$result = implode(',', array_column(json_decode($str, true), 'v'));

Ну а если кровь из носу нужна регулярка, тогда

preg_match_all('~(?<="v": )\d+~', $str, $match);
$result = implode(',', $match[0]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@IS-Builder
~ PHP-8 & REGEXP - This is a really powerful kit ~
Александр Андропов тут не нужны регулярки:
$json = '{"v": 50, "vd": 5},
 {"v": 51, "vd": 1},
 {"v": 54, "vd": 3},
 {"v": 57, "vd": 3},
 {"v": 60, "vd": 3},
 {"v": 61, "vd": 1},
 {"v": 62, "vd": 1},
 {"v": 63, "vd": 1},
 {"v": 63, "vd": 0}';

$array = array_map(function($a){ return $a['v']; }, json_decode("[$json]", true));

var_dump($array);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы