在Hive中处理正则表达式中的多个匹配项

时间:2017-02-08 23:37:56

标签: regex hadoop hive

我想解析Hive中表达式中的负十进制值,我写了以下正则表达式,

select regexp_extract("abcsdfghj-117.3700631&poikse-118.244&",
'([-][1-9][0-9]*[.][0-9]+)&*') as output

虽然正则表达式似乎运行良好,但它只给了我第一场比赛。是否有可能让蜂巢给出所有可能的组合?在配置单元中是否有任何功能可以返回所有匹配项?

我确实谷歌这个,但我找不到任何答案。任何帮助将不胜感激

由于

1 个答案:

答案 0 :(得分:3)

  1. {prefix}{number}&
  2. 替换每个,{number}
  3. 从第二个字符处删除结果(删除第一个,
  4. ,
  5. 将结果拆分为数组
    hive> select split(substr(regexp_replace("abcsdfghj-117.3700631&poikse-118.244&",'.*?(-\\d+\\.\\d+)&',',$1'),2),',') as output;
    OK
    ["-117.3700631","-118.244"]