我需要替换键:值对周围的方括号,类似于以下内容。 非常感谢任何帮助!
“属性”中的数据如下所示:
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 正则表达式中加倍反斜杠。这是因为单个反斜杠在 Hive 字符串中用作转义字符,因此在正则表达式解析器可以看到它之前它会被删除。双反斜杠变成单反斜杠,这就是您所需要的。
要查看反斜杠如何被删除,只需使用正则表达式作为字符串文字运行选择:
select '\\[' from t limit 1;
OK
\[
这是正则表达式
[\[\]]+
,它将匹配字符串中的一个或多个 [
和 ]
。
如果您在 Python 虚拟环境中尝试执行此操作,请将
///
增加三倍以转义 [
或 ]
spark.sql(""" select REGEXP_REPLACE('arn:scheduler:::job/3bf19fab[xyz]-“#date{dt($YYY_MM_DD)}”' , '[^a-zA-Z0-9:\/\\\-_{}()\\\[\\\]#$%,.]+','',1) """).show(truncate=False)