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

Posted

技术标签:

【中文标题】如何在 Hive 中使用正则表达式来提取第二个整数? [关闭]【英文标题】:How to use regular expression in Hive to extract the second integer? [closed] 【发布时间】:2020-01-06 21:22:36 【问题描述】:

数据:

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

我尝试了什么:

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

想要的结果:

5
10

【问题讨论】:

【参考方案1】:

像这样:

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

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

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

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

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

甚至更简单:

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

【讨论】:

以上是关于如何在 Hive 中使用正则表达式来提取第二个整数? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在倒数第二个 / 之前获取字符串

批处理正则表达式怎样替换第二个指定字符

如何使用正则表达式从字符串中提取第 n 个 URL?

在斜杠之间提取字符串,但第二个斜杠可能不存在[重复]

Jmeter——关联与正则

如何使用正则表达式(或 C# 函数)在一个变量中剪切 TEXT MESSAGE 并从此文本中剪切第二个变量 USERNAME?