首页 > 解决方案 > hive - 拆分函数中的正则表达式不提供输出。它是空的

问题描述

我想使用 hive 查询将字符串分成四个字符。

输入 : abcdefghijkl

select split("abcdefghijkl", '([a-zA-Z0-9]{4})') from table limit 1;

输出是["","","",""]

需要输出:["abcd","efgh","ijkl"]

标签: regexhivehiveql

解决方案


您可以使用

select split(regexp_replace("abcdefghijkl",'.*?([a-zA-Z0-9]{4})',',$1'),',') as output;

模式.*?([a-zA-Z0-9]{4})匹配

  • .*?- 任何 0+ 个字符,尽可能少
  • ([a-zA-Z0-9]{4})- 捕获组 1:4 个字母数字字符

匹配被替换,为第 1 组的内容。然后,split用逗号分隔结果。


推荐阅读