Удаление всех символов и цифр, кроме последней переменной с символом тире

1

Привет, я хочу удалить символы, используя preg_replace в php, поэтому у меня есть этот код здесь, который я хочу удалить целые символы, буквы и цифры, кроме последней цифры, у которой есть символ (()), а затем цифры код.

echo preg_replace('/(.+)(?=-[0-9])|(.+)/','','asdf1245-10');

Я ожидаю, что результат будет

-10

проблема выше не работает очень хорошо. Я проверил шаблон, используя http://www.regextester.com/, похоже, что он работает, но с другой стороны http://www.phpliveregex.com/ не работает вообще. Я не знаю, почему, но кто может помочь понять это?

большое спасибо

Теги:
preg-replace

4 ответа

2
Лучший ответ

Вот путь:

echo preg_replace('/^.+?(-[0-9]+)?$/','$1','asdf1245-10');

Вывод:

-10

а также

echo preg_replace('/^.+?(-[0-9]+)?$/','$1','asdf124510');

Вывод:

<nothing>
  • 0
    спасибо, это многое объясняет.
  • 1
    что значит 1 доллар?
Показать ещё 2 комментария
0

Другой путь:

$result = preg_match('~\A.*\K-\d+\z~', $str, $m) ? $m[0] : '';

шаблон детали:

\A     # start of the string anchor
.*     # zero or more characters
\K     # discard all on the left from match result
-\d+   # the dash and the digits
\z     # end of the string anchor
0
echo preg_replace('/(\w+)(-\w+)/','$2', 'asdf1245-10');
0

Мое первое мышление заключается в том, чтобы использовать взрыв в этом случае. Сделайте его простым, как следующий код.

$string = 'asdf1245-10';
$array = explode('-', $string);
end($array);
$key = key($array);
$result = '-' . $array[$key];

$ result => '-10';

  • 0
    Это по-другому, но слишком много строк.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню