我想在 Hive 的表达式中解析负十进制值,我编写了以下正则表达式,
select regexp_extract("abcsdfghj-117.3700631&poikse-118.244&",
'([-][1-9][0-9]*[.][0-9]+)&*') as output
虽然正则表达式似乎运行良好,但它只给出了它的第一个匹配项。是否可以让配置单元给出所有可能的组合? hive 中是否有任何函数可以返回所有匹配项?
我用谷歌搜索了这个,但没有找到任何答案。任何帮助将不胜感激
谢谢
最佳答案
- 将每个
{prefix}{number}&
替换为,{number}
- 从第二个字符中删除结果(删除第一个
,
) - 通过
,
将结果拆分为数组
hive> select split(substr(regexp_replace("abcsdfghj-117.3700631&poikse-118.244&",'.*?(-\\d+\\.\\d+)&',',$1'),2),',') as output;
OK
["-117.3700631","-118.244"]
关于regex - 在 Hive 中处理正则表达式中的多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42125647/