Хорошо, вот что у меня есть
$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. Я чувствую, что мне здесь не хватает чего-то очень простого.
Должно быть больше нежадным Похоже
.*?([0-9]*-[0-9]*).*
Я бы использовал вместо этого preg_match:
$string = 'Something something 1234-123';
preg_match('/\d+-\d+/', $string, $match);
echo $match[0],"\n";
Выход:
1234-123