regex — PHP preg_replace с группами чисел

Хорошо, вот что у меня есть

$string=Something something 1234-123'; //can be an arbitrary amount of digits on each side of hyphen
$numbers=preg_replace("/.*([0-9]*-[0-9]*).*/","$1", $string);
echo $numbers;

Это распечатка только «-123», это должна быть распечатка 1234-123. Я чувствую, что мне здесь не хватает чего-то очень простого.

-1

Решение

Должно быть больше нежадным Похоже

.*?([0-9]*-[0-9]*).*

1

Другие решения

Я бы использовал вместо этого preg_match:

$string = 'Something something 1234-123';
preg_match('/\d+-\d+/', $string, $match);
echo $match[0],"\n";

Выход:

1234-123
0

По вопросам рекламы [email protected]