Hive在JSON中转义RegEx



我有一个JSON文件,我把我的SQL查询,它将在Hive上自动运行。

JSON结构如下:

{
"name": "query1",
"query": "select regexp_extract(column, '(.*)\s\|', 1) as column_one from data"
}

我们的想法是提取第一个空格+竖条之前的所有内容。

对于一个给定的例子,当我在Hive中尝试时,它按预期工作:

select regexp_extract('First part | Second Part', '(.*)\s\|', 1) as column_one;
First part

正如你所看到的,你已经需要一个反斜杠s|,否则在Hive中不起作用。但是,当使用JSON文件自动运行时,我得到以下内容:

Fir

然后我明白你需要另一个反斜杠来转义JSON,所以我用了下面的:

{
"name": "query1",
"query": "select regexp_extract(column, '(.*)\s\|', 1) as column_one from data"
}

但是,它仍然给我Fir而不是First part

可以使用

{
"name": "query1",
"query": "select regexp_extract(column, '([^|]*?)[[:space:]]*[|]', 1) as column_one from data"
}

注意

  • ([^|]*?)-捕获除|以外的任何零个或多个字符尽可能少
  • [[:space:]]*-零或多个空白字符
  • [|]-|字符(在字符类[...]中,|字符被视为管道符号)。

相关内容

  • 没有找到相关文章

最新更新