在hive或impala中,是否有一种方法可以从分隔字符串中提取字符串,但只能在我想要的字符串与一个或多个模式不匹配的情况下提取?
例如,我有一个IP字段(数量因网络适配器而异):
169.254.182.175,192.168.0.1,10.199.44.111
我想提取不以169.254开头的IP。(可能有很多)并且不等于192.168.0.1
IP也可以是任何顺序。
我试着用嵌套的case来做substr,但由于字符串中的ip数未知,所以没有成功。
这可以用regex_extract或类似的东西来实现吗?
谢谢
1条答案
按热度按时间puruo6ea1#
对于不想保留的模式,可以将
regexp_replace
与捕获组一起使用,并在替换字符串中仅指定感兴趣的组。请参阅Impala(impalad版本3.4.0)中的以下示例:
由于未知原因,e1d1e的工作方式不同,因为对于情况1和3,使用3作为返回组的同一regex根本不会返回任何内容。