【发布时间】:2018-06-27 22:59:29
【问题描述】:
我在 Impala 或 Hive 中执行此操作。基本上假设我有一个这样的字符串
f-150:aa|f-150:cc|g-210:dd
每个元素由管道| 分隔。每个都有前缀f-150 或其他。我希望能够删除前缀并仅保留与特定前缀匹配的元素。比如前缀是f-150,我希望regex_replace后面的最后一个字符串是
aa|cc
dd 被移除,因为g-210 是不同的前缀并且不匹配,因此整个元素被移除。
知道如何在一个 SQL 中使用字符串表达式来做到这一点吗?
谢谢
更新 1
我在Impala中试过这个:
select regexp_extract('f-150:aa|f-150:cc|g-210:dd','(?:(?:|(\\|))f-150|keep|those):|(?:^|\\|)\\w-\\d{3}:\\w{2}',0);
但是得到了这个输出:
f-150:aa
在Hive,我得到了NULL。
【问题讨论】: