Hive:regexp_替换方括号

问题描述 投票:0回答:3

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

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

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;
hive square-bracket
3个回答
5
投票

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

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

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

2
投票

这是正则表达式

[\[\]]+
,它将匹配字符串中的一个或多个
[
]


0
投票

如果您在 Python 虚拟环境中尝试执行此操作,请将

///
增加三倍以转义
[
]

spark.sql("""    select REGEXP_REPLACE('arn:scheduler:::job/3bf19fab[xyz]-“#date{dt($YYY_MM_DD)}”' , '[^a-zA-Z0-9:\/\\\-_{}()\\\[\\\]#$%,.]+','',1) """).show(truncate=False)
© www.soinside.com 2019 - 2024. All rights reserved.