如果我使用Hive,则可以正常工作。但是,如果我使用Impala,则会引发错误:
<pre><code contentEditable="true">
</code></pre>
基本上,Impala不支持先行和后行
今天有解决方法吗?也许使用UDF?
谢谢。
答案 0 :(得分:1)
由于您使用的是regexp_replace
,因此可以匹配并捕获要保留(但要用作必备上下文)的字符串部分,并替换为反向引用。参见regexp_replace
Impala reference:
这些示例说明了如何用替换文本替换与模式匹配的字符串部分,替换文本可以包括对模式字符串中任何
()
组的反向引用。反向引用编号从1开始,并且任何\
个字符都必须转义为\\
。
因此,在这里,您可以使用
select regexp_replace("foobarbarfoo","bar(bar)","<NA>\\1");
^ ^ ^^^
请注意,它不能替换连续的匹配项,但是,它将在当前方案和foobarbarfoo
will turn into foo<NA>barfoo
下工作(请注意,Go regex引擎也是RE2,因此在regex101.com上选择了此选项)。 / p>