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)
输入:
[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:
列中有 spacehive> 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)