【问题标题】:Regex to get the string inside parentheses using hive sql正则表达式使用 hive sql 获取括号内的字符串
【发布时间】:2018-03-16 08:26:14
【问题描述】:

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

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

我在这里尝试了什么:

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

任何获得价值的建议?

【问题讨论】:

    标签: sql regex hive


    【解决方案1】:

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

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

    来自Hive documentation

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

    【讨论】:

      【解决方案2】:

      试试这个:

      \((.*?)\)
      

      在蜂巢中:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-17
        • 2010-09-29
        • 2013-01-16
        • 1970-01-01
        相关资源
        最近更新 更多