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

текст:

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

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

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

объясните плз
  • Вопрос задан
  • 115 просмотров
Решения вопроса 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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
07 мая 2024, в 15:10
1500 руб./в час
07 мая 2024, в 15:07
1500 руб./в час
07 мая 2024, в 14:56
2000 руб./за проект