输入:
[a,b], [c,d], [e,f]
select split(col,'\\,') from table_1;
通过上面的查询,我可以分割每个逗号。 (大括号内外)
我只需要在大括号外的逗号上拆分。所以我改变了下面的查询。
select split(col,',(?=\[)') from table_1;
我使用的正则表达式是正确的,但我无法获得输出。
需要输出:
"[a,b]","[c,d]","[e,f]"
答案 0 :(得分:1)
看起来您的数据之间存在空格,因此请尝试使用此正则表达式:
,\\s(?=\\[)
编辑:
所以,我不确定列中是否有空格,所以这两个都是:
案例1 :列中没有空格
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 :列中有空格
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)