Я собираю некоторые данные.Одним из пунктов данных является призовой фонд турнира.В данных много разных валют.Я хотел бы извлечь сумму и валюту из каждого значения, чтобы я мог использовать Google для преобразования их в базовую валюту.Однако с тех пор, как я использовал регулярные выражения, прошло много времени, поэтому я, по меньшей мере, растерян.Возможные форматы данных:
$534
$22,136.20
3,200,000 Ft HUF
12,500 kr DKK
50,000 kr SEK
$3,800 AUD
$10,000 NZD
€4,500 EUR
¥100,000 CNY
₹7,000,000 INR
R$39,000 BRL
Ниже приведено первое регулярное выражение, которое я придумал.
[0-9,.]+(.+)[A-Z]{3}
Но это, очевидно, незахватить сумму и валюту, поэтому я изменил ее.
([0-9,.]+).+([A-Z]{3})
Однако есть проблемы с этим регулярным выражением, которые я не могу выяснить.
([0-9,.]+)
сам по себе отлично работает для захвата только суммы.
Когда я добавляю .+
к этому выражению, дляпо какой-то причине перестает захватывать конечные 4
и 0
в первом и втором тестовых случаях соответственно. Почему?
Затем, когда я добавляю ([A-Z]{3})
, кажется, что он отлично работает для всех тестовых случаев, но, очевидно, ничего не выбирает в первых двух.
Итак, я изменил его на ([A-Z]{0,3})
, что, кажется, нарушает все.
Что происходит?Как я могу изменить выражение, чтобы оно работало?
Вот где я нахожусь: ([0-9,.]+)((?:.+)([A-Z]{3}))?