Regex для извлечения валюты Великобритании, включая символ £ и пенсов (p) - PullRequest
0 голосов
/ 24 сентября 2019

Я довольно новичок в RegEx, и у меня был поиск в Интернете, но я не могу найти регулярное выражение, которое соответствует моим требованиям.

Конечная цель - найти строку текста и извлечь минимальную сумму денегОднако, поскольку строка может содержать более одной суммы в фунтах, я рад, что регулярное выражение просто извлекает все денежные значения, которые он может найти, а затем я могу написать вычисление, чтобы получить наименьшую сумму.

Строка может иметь числа, которые не являются денежными значениями / многочисленными суммами, поэтому регулярное выражение всегда должно сначала искать символ £, ИЛИ оно может заканчиваться буквой «p» или «P» для обозначения пенсов.Например, «мне нужно 2 из них по 10 фунтов стерлингов каждый и один из них по 50 пенсов» - должно возвращаться 10,00 и 0,50 - тогда я могу рассчитать, что 0,50 является наименьшей суммой.

Поскольку люди также пишут свои суммы вразличными способами, мне нужно регулярное выражение, чтобы иметь возможность определять различные шаблоны - в том числе "," для каждой тысячи.Все указанные ниже значения должны быть действительными:

£ 0
£ 0,00
£ 0,00p
£ 0000
£ 0000.00
£ 0000.00p
£ 0,000
£ 0,000.00
£ 0,000.00p
0p

Надеюсь, кто-то сможет посоветовать лучший способ подойти к этому.

Спасибо

1 Ответ

0 голосов
/ 24 сентября 2019

Это работает с вашим набором данных:

(?=^£|.*p$)£?\d*(?:,\d{3})*(\.\d{2})?p?

Но это может неправильно соответствовать и некоторым крайним случаям, потому что все необязательно ...

https://regex101.com/r/WptUn6/3

...