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

Obs*_*ver 2 regex hadoop hive

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

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

虽然正则表达式似乎运行良好,但它只给了我第一个匹配项。是否有可能让 hive 给出所有可能的组合?hive 中是否有任何函数可以返回所有匹配项?

我做了谷歌这个,我无法找到任何答案。任何帮助,将不胜感激

谢谢

Dav*_*itz 6

  1. 每次更换{prefix}{number}&使用,{number}
  2. 从第二个字符中删除结果(删除第一个,
  3. 将结果拆分为数组 ,

hive> select split(substr(regexp_replace("abcsdfghj-117.3700631&poikse-118.244&",'.*?(-\\d+\\.\\d+)&',',$1'),2),',') as output;
OK
["-117.3700631","-118.244"]
Run Code Online (Sandbox Code Playgroud)