6

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

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

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;
4

2 回答 2

4

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

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

select '\\[' from t limit 1;
OK
\[
于 2014-02-05T18:44:06.160 回答
2

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

于 2014-01-15T02:31:21.577 回答