Hive:regexp_replace 方括号

Posted

技术标签:

【中文标题】Hive:regexp_replace 方括号【英文标题】:Hive: regexp_replace square brackets 【发布时间】:2014-01-15 02:20:48 【问题描述】:

我需要替换键:值对周围的方括号,类似于以下内容。任何帮助深表感谢!

“属性”中的数据如下所示:

name: property1
value: [12345667:97764458]

**code**
SELECT p.name, regexp_replace(p.value,'[','') AS value
FROM properties p

已解决:修改代码

SELECT p.name, regexp_replace(p.value,'\\[|\\]','') AS value
FROM properties p;

【问题讨论】:

代码:regexp_replace(p.value,'\[|\]','') 有效 【参考方案1】:

在 Hive 正则表达式中,您总是需要将反斜杠加倍。这是因为单个反斜杠被用作 Hive 字符串中的转义字符,因此它会在正则表达式解析器看到它之前被剥离。双反斜杠变成单反斜杠,这正是您所需要的。

要查看反斜杠如何被剥离,只需使用您的正则表达式作为字符串文字运行选择:

select '\\[' from t limit 1;
OK
\[

【讨论】:

【参考方案2】:

这是你的正则表达式[\[\]]+,这将匹配字符串中的一个或多个[]

【讨论】:

若昂,谢谢。运行它时我仍然遇到错误。也许我错误地使用了代码?请查看原始提交中修改后的代码。 pe.value 不存在,你的表名别名是'p'。 对不起,这是上面代码中的错字。我添加了返回的错误。

以上是关于Hive:regexp_replace 方括号的主要内容,如果未能解决你的问题,请参考以下文章

方括号内的 Impala/Hive 字符串提取

我有一个方括号内的输入图,我想在蜂巢中阅读它

hive函数REGEXP_REPLACE用法

hive函数REGEXP_REPLACE用法

hive函数REGEXP_REPLACE用法

hive函数REGEXP_REPLACE用法