Hive Regex_replace 给出了无法编译正则表达式模式:错误
Posted
技术标签:
【中文标题】Hive Regex_replace 给出了无法编译正则表达式模式:错误【英文标题】:Hive Regex_replace is giving Could not compile regexp pattern: error 【发布时间】:2021-03-05 14:40:31 【问题描述】:我正在尝试替换我的字符串中的“[[
”和“]]
”,并且我正在使用两个 regex_replace 函数来做到这一点。
Select regexp_replace(regexp_replace("[[2020-03-23T10:33:03Z, 224554, training, 2019-05-06T15:53:23Z, Completed]]"
,"]]",""),"[[","")
当我尝试替换第一个字符串“]]
”时它工作正常,但如果我对“[[
”执行相同操作,则会出现编译错误:
无法编译正则表达式模式:[[错误:缺少]:[[
任何帮助将不胜感激
【问题讨论】:
可以正常使用replace
吗? reg replace 可能正在考虑将 [[ 作为其关键字的一部分。
replace 不适用于我们拥有的 hive 版本,translate 的工作方式与 replace 相同。
【参考方案1】:
[
和 ]
字符在正则表达式中具有特殊含义,应使用双反斜杠进行转义。您也可以使用 OR (|
) 将 [[
和 ]]
组合在单个 regexp_replace 中:
Select regexp_replace("[[2020-03-23T10:33:03Z, 224554, training, 2019-05-06T15:53:23Z, Completed]]"
,"\\]\\]|\\[\\[","")
结果:
2020-03-23T10:33:03Z, 224554, training, 2019-05-06T15:53:23Z, Completed
除了两个方括号,您可以使用单个带量词 \\]2
或 \\]+
的方括号来表示任意数量的括号
【讨论】:
以上是关于Hive Regex_replace 给出了无法编译正则表达式模式:错误的主要内容,如果未能解决你的问题,请参考以下文章
CX_Freeze 可执行文件给出“无法加载文件系统编解码器”错误