HIVE中regexp_extract用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HIVE中regexp_extract用法相关的知识,希望对你有一定的参考价值。

参考技术A 函数描述:

字符串正则表达式解析函数。-- 这个函数有点类似于 substring(str from 'regexp') ..

参数解释:
其中:
str是被解析的字符串
regexp 是正则表达式
idx是返回结果 取表达式的哪一部分 默认值为1。
0表示把整个正则表达式对应的结果全部返回
1表示返回正则表达式中第一个() 对应的结果 以此类推
注意点:
要注意的是idx的数字不能大于表达式中()的个数。
否则报错。

Hive str to array / regexp_extract

with releases as (select '["us","ca","fr"]' as country)

select split(regexp_extract(country,'^\\\\["(.*)\\\\"]$',1),'","')

from releases;

["us","ca","fr"]

--------

with releases as (select '["us:[abc]","ca:[abc]","fr:[abc]"]' as country)

select split(regexp_extract(country,'^\\\\["(.*)\\\\"]$',1),'","') -- 提取开头的[和结尾的]之间的内容

from releases;

["us:[abc]","ca:[abc]","fr:[abc]"]

中间的[]依然存在。

-------

with releases as (select '["us:[abc]","ca:[abc]","fr:[abc]"]' as country)
select  split(regexp_extract(country,'^\\\\["(.*)\\\\"]$',1),'","')  as  c1 , -- ["us:[abc]","ca:[abc]","fr:[abc]"]
split(regexp_extract(country,'^\\\\["(.*)\\\\"]$',0),'","')  as  c2  -- ["[\\"us:[abc]","ca:[abc]","fr:[abc]\\"]"]
     from    releases;

0表示把整个正则表达式对应的结果全部返回
1表示返回正则表达式中第一个() 对应的结果 以此类推

Hive,regexp_extract用法--注意圆括号!!

end

以上是关于HIVE中regexp_extract用法的主要内容,如果未能解决你的问题,请参考以下文章

hive通过regexp_extract从字典串中提取密钥?

如何仅使用 Hive 中的 regexp_extract 函数提取标点符号

Hive regexp_extract 从字符串中提取数值

Hive str to array / regexp_extract

如何使用 talend 在 hive 上的分隔符 nth 之间进行 regexp_extract

大数据之Hive:regexp_extract函数