Задать вопрос

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

текст:

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

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

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

объясните плз
  • Вопрос задан
  • 118 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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

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

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

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