Какая строка RegEx найдет последнюю (самую правую) группу цифр в строке?

Ищу строку regex, которая позволит мне найти самую правую (если есть) группу цифр в строке. Нас интересуют только смежные цифры. Нам не важны знаки, запятые, десятичные дроби и т.д.. Они, если будут найдены, должны просто рассматриваться как нецифры, как и буквы.

Это нужно для целей замены/инкрементации, поэтому нам также нужно захватить все, что находится до и после обнаруженного числа, чтобы мы могли восстановить строку после увеличения значения, поэтому нам нужен маркерный regex.

Вот примеры того, что мы ищем:

  • "abc123def456ghi" должен определить '456'
  • "abc123def456ghi789jkl" должен определить '789'
  • "abc123def" должен определить '123'
  • "123ghi" должен определить '123'
  • "abc123, 456ghi" должен определить '456'
  • "abc-654def" должен определить '654'
  • "abcdef" не должен вернуть ни одного совпадения

В качестве примера того, что мы хотим, это было бы что-то вроде того, чтобы начать с имени 'Item 4-1a', извлечь '1', а все, что до, было префиксом, а все, что после, было суффиксом. Затем, используя это, мы можем генерировать значения 'Item 4-2a', 'Item 4-3a' и 'Item 4-4a' в цикле кода.

Теперь, если бы я искал первый набор, это было бы просто. Я бы просто нашел первый смежный блок из 0 или более нецифр для префикса, затем блок из 1 или более смежных цифр для номера, затем все остальное до конца было бы суффиксом.

Проблема, с которой я сталкиваюсь, заключается в том, как определить префикс как включающий все (если таковые имеются) числа, кроме последнего набора. Все, что я пытаюсь сделать для префикса, продолжает поглощать последний набор, даже когда я пробовал привязать его к концу, по сути, отменив вышеописанное.

7
задан MarqueIV 5 January 2012 в 12:40
поделиться