如何在 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 中使用正则表达式来提取第二个整数? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用正则表达式(或 C# 函数)在一个变量中剪切 TEXT MESSAGE 并从此文本中剪切第二个变量 USERNAME?