sql中的reguar表达式匹配3个世界货币代码,但不匹配货币代码后面的数字

k97glaaz  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(273)

我想从字符串中提取货币代码
字符串如下所示: brand_sportswear|FOOTWEAR_FOOTWEAR_FOOTWEAR|footwear_footwear_footwear|12787274_12016989_12787233|EUR276.94 最后是货币。
如果我使用 '\|[A-Z]{3}[1-9]' 我可以在最后得到货币,但这是输出:

|EUR2

我怎么能只提取最后的货币代码?
对我来说,把

'USD|EUR|JPY'

因为我有很多货币通过。

falq053o

falq053o1#

环顾四周

presto允许lookaheads,因此您可以使用以下选项:

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

但是,这不会移除管道 | .
我认为普雷斯托目前不允许落后。

“捕获”组

另一种选择是使用捕获组:

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

子串

或者,您可以使用以下命令对现有regex-it子串:

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

相关问题