Регулярное выражение для сопоставления последнего числа в разных строках

#regex

Вопрос:

Можно ли сопоставить последнее число из другой строки, выглядящее так:

Total fara TVA TVA Total 171,11 RON 32,51 RON 203,62 RON

Чего я хочу: 203,62

Что я пытаюсь regexr.com/64to5 : Total(?:s*(d (?:,d )?)){1}

Что я получаю: 171,11

Любая помощь будет очень признательна! Спасибо.

Ответ №1:

Вы можете использовать группу захвата:

 bTotalb.*(?<![d,])(d (?:,d )?)b
 
  • bTotalb Общее количество совпадений между границами слов, чтобы предотвратить частичное совпадение
  • .* Сопоставьте любой символ, кроме новой строки
  • (?<![d,]) Отрицательный внешний вид, утверждает, что не цифра или , слева
  • ( Группа захвата 1
    • d (?:,d )? Сопоставьте 1 цифру с необязательной десятичной частью
  • ) Закрыть группу захвата
  • b Граница слов

Демонстрация регулярных выражений

Если вы не хотите снова пересекать общую сумму совпадения перед числом:

  bTotalb(?:(?!bTotalb).)*(?<![d,])(d (?:,d )?)b
 

Демонстрация регулярных выражений

Ответ №2:

С показанными вами образцами, пожалуйста, попробуйте следовать регулярному выражению.

 bTotal.*(?<=s)(d ,d )s 
 

Онлайн-демонстрация для приведенного выше регулярного выражения

Пояснение: Добавление подробного объяснения вышеизложенного.

 bTotal.*  ##Using word boundary along with string Total followed by .* greedy match here.
(?<=s)    ##using positive look behind to make sure spaces are present before next mentioned regex.
(d ,d )  ##Creating 1st capturing group to match 1 or more occurrences of digits followed by comma and followed by 1 or more digits.
s         ##matching 1 or more occurrences of spaces here.
 

ИЛИ в соответствии с хорошим предложением четвертой брид: без позитивного взгляда попробуйте следовать:

 bTotal.*s(d ,d )s 
 

Комментарии:

1. @shAkur, не могли бы вы, пожалуйста, дать мне знать, сработал ли мой ответ для вас?