hive - Split 函数中的正则表达式不提供输出

hive - Regex in Split function not giving output

输入:

[a,b], [c,d], [e,f]
select split(col,'\,') from table_1; 

通过上述查询,我​​可以在每个逗号处进行拆分。 (大括号内外)

我只需要在大括号外的逗号处进行拆分。所以我将查询更改如下。

select split(col,',(?=\[)') from table_1;

据我所知,我使用的正则表达式是正确的,但我无法获得输出。

需要输出:

"[a,b]","[c,d]","[e,f]" 

你的数据之间似乎有一个 space,所以试试这个正则表达式:

,\s(?=\[)

编辑:

因此,我不确定您是否在该列中有 spaces,因此两者都适用:

案例 1:列中没有 spaces

hive> describe a;
OK
t                       string

hive> select * from a;
OK
[a,b],[c,d],[e,f]
Time taken: 0.089 seconds, Fetched: 1 row(s)

hive> select split(t, ',(?=\[)') from a;
OK
["[a,b]","[c,d]","[e,f]"]
Time taken: 0.081 seconds, Fetched: 1 row(s)

情况 2

列中有 space
hive> describe b;
OK
t                       string              

hive> select * from b;
OK
[a,b], [c,d], [e,f]
Time taken: 0.084 seconds, Fetched: 1 row(s)

hive> select split(t, ',\s(?=\[)') from b;
OK
["[a,b]","[c,d]","[e,f]"]
Time taken: 0.082 seconds, Fetched: 1 row(s)