Выражение Reguar в SQL для соответствия 3-м мировому коду валюты, но не цифрам после кода валюты - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь извлечь коды валют из строки

Строка выглядит так: brand_sportswear|FOOTWEAR_FOOTWEAR_FOOTWEAR|footwear_footwear_footwear|12787274_12016989_12787233|EUR276.94 С валютой в конце.

Если я использую '\|[A-Z]{3}[1-9]', я могу получить валюта в конце, но это результат:

|EUR2

Как я могу вытащить только код валюты в конце?

Это не совсем реалистично c мне поставить что-то вроде

'USD|EUR|JPY'

Потому что мне приходит много валют.

1 Ответ

1 голос
/ 27 мая 2020

Поисковые запросы

Presto позволяет выполнять поиск вперед, поэтому вы можете использовать следующее:

regexp_extract(string, '\|[A-Z]{3}(?=[1-9])')

Однако это не приведет к удалению канала |.

Я не верю, что в настоящее время Presto позволяет выполнять ретроспективный просмотр.


Группа захвата

Другой альтернативой является использование группы захвата:

regexp_extract(string, '\|(A-Z{3})[1-9]', 1)

Подстрока

В качестве альтернативы вы можете просто подстроку существующего регулярного выражения использовать следующее:

substr(regexp_extract(string, '\|A-Z{3}[1-9]'), 2, 3)
...