Как получить числовое значение, которое не заканчивается на `%`C#

Место общения программистов C#
Anonymous
Как получить числовое значение, которое не заканчивается на `%`

Сообщение Anonymous »

Мы конвертируем PDF-файлы счетов в текст, и они сильно различаются. Они содержат произвольный текст, ставки НДС (обозначаются %) и суммы (цифры, за которыми не следует %). Цель состоит в том, чтобы сопоставить суммы с регулярным выражением.
Различные шаблоны регулярных выражений были опробованы, но не удалось. Как извлечь первое число, которое не заканчивается символом процента () с использованием C# 10 и .NET 10? Между числом и символом процента может быть или не быть пробела.
Для следующих текстов результаты должны быть 4,23 и 5,67.

Код: Выделить всё

Arbitrary text 3.12 % Arbitrary text 4.23 Arbitrary text
или

Код: Выделить всё

Arbitrary text 5.67 Arbitrary text 8% Abitrary text
Я пробовал регулярное выражение -?[0-9]{1,3}(?:[_,.]?[0-9]{3})*[.,]?[0-9]{0,2}[^%], но оно возвращает 3,12.
Regex101>

Вернуться в «C#»