正则表达式使用hive sql获取括号内的字符串

时间:2018-03-16 08:26:15

标签: sql regex hive

我正在尝试在括号之间获取字符串,但我总是得到空值。

String_Input: select sum(OUTPUT_VALUE) from table_name
Output : OUTPUT_VALUE

我在这里尝试了什么:

select regexp_extract(String_Input,"/\\(([^)]+)\\)/") from table_name;

任何获得价值的建议?

2 个答案:

答案 0 :(得分:2)

如果需要获取没有括号的值,则应指明需要将第三个参数中的Captturing group 1值提取到regexp_extract函数。此外,您应该删除/分隔符,它们被解析为文字符号。

select regexp_extract(String_Input,"\\(([^)]+)\\)", 1) from table_name;
                                    ^            ^  ^ 

来自Hive documentation

  

' index' 参数是Java regex Matcher group() 方法索引。有关'索引'的更多信息,请参阅 docs / api / java / util / regex / Matcher.html 。或Java正则表达式 group() 方法。

答案 1 :(得分:0)

试试这个:

\((.*?)\)

在Hive中:

select regexp_extract(String_input,'\\((.*?)\\)')
from table_name