如何在 Hive 中使用正则表达式来提取第二个整数?

How to use regular expression in Hive to extract the second integer?

数据:

BUY 2 FOR 5(STORES)
BUY 2 FOR 10(STORES)

我尝试了什么:

regexp_extract(DATA, '.*? (\d+) .*$', 2)

想要的结果:

5
10

像这样:

regexp_extract(DATA, '^[^0-9]+?\d+[^0-9]+?(\d+)', 1);

regexp_extract(DATA, '^\D+?\d+\D+?(\d+)', 1);

正则表示:一个或多个非数字开头,一个或多个数字,一个或多个非数字,最后是捕获的数字组,需要提取组号1。

另一种解决方案是用非数字分割字符串并取第二个元素:

select split(DATA, '[^0-9]+')[2];

或者更简单:

select split(DATA, '\D+')[2]; --\D+ means one or more non-digits