Почему регулярное выражение захватывает только первый элемент?

текст:

Число 560
Размерный ряд: 42 88,44,46
#Цена: 400 руб 400коп. шт.
Место: 2А-75 корпус А

/(?<=ряд:\s)(?:\d+)/gm

выводит только 42 , а мне надо чтобы был захват всех чисел до конца строки
42
88
44
46

объясните плз
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
@dodo512
$str = 'Число 560
Размерный ряд: 42 88,44,46
#Цена: 400 руб 400коп. шт.
Место: 2А-75 корпус А';

preg_match('/ряд:.+/', $str, $m);

preg_match_all('/\d+/', $m[0], $r);

print_r($r[0]);


Или
preg_match_all('/(?:\G(?!^)|ряд:)[\s,]\K\d+/', $str, $r);

https://regex101.com/r/aMEAGG/1
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
solotony
@solotony
покоряю пик Балмера
может так
/(?<=ряд:\s)(?:\d+)(?:[^\d]+\d+)*/gm

какой именно результат ты ожидаешь ?
Ответ написан
Ваш ответ на вопрос

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

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