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 方括号的主要内容,如果未能解决你的问题,请参考以下文章