Номер совпадения в конце строки

Учитывая следующую строку, как я могу сопоставить все число в конце?

$string = "Conacu P PPL Europe/Bucharest 680979";

Я должен сказать, что длина строки не является постоянной.

Мой язык выбора - PHP.

Спасибо.

Ответ 1

Вы можете использовать регулярное выражение с preg_match, например:

$string = "Conacu P PPL Europe/Bucharest 680979";

$matches = array();
if (preg_match('#(\d+)$#', $string, $matches)) {
    var_dump($matches[1]);
}

И вы получите:

string '680979' (length=6)

И вот некоторая информация:

  • # в начале и в конце регулярного выражения являются разделителями - они ничего не означают: они просто указывают начало и конец регулярного выражения; и вы можете использовать любой желаемый персонаж (люди часто используют /)
  • "$" в конце шаблона означает "конец строки"
  • () означает, что вы хотите захватить то, что находится между ними
    • с preg_match, массив, указанный в качестве третьего параметра, будет содержать данные захваченных данных
    • первым элементом в этом массиве будет вся согласованная строка
    • а следующие будут содержать все данные, согласованные в наборе ()
  • \d означает "число"
  • и + означает одно или несколько раз

Итак:

  • соответствует одному или нескольким номерам
  • в конце строки

Для получения дополнительной информации вы можете посмотреть PCRE Patterns и Pattern Syntax.

Ответ 2

Следующее регулярное выражение должно выполнить трюк:

/(\d+)$/

Ответ 3

EDIT: Этот ответ проверяет, является ли последний символ в строке цифрой или нет. Поскольку вопрос https://stackoverflow.com/q/12258656/1331430 был закрыт как точный дубликат этого, я отправлю свой ответ для него здесь. Для чего этот вопрос ОП запрашивает, используйте принятый ответ.


Здесь мое решение без регулярного выражения для проверки того, является ли последний символ в строке цифрой:

if (ctype_digit(substr($string, -1))) {
    //last character in string is a digit.
}

DEMO

substr передача start = -1 будет возвращать последний символ строки, который затем проверяется на ctype_digit, который вернет true, если символ является цифрой, или false в противном случае.

Литература: