hive replace_hive 正则表达式详解

hive中的正则表达式还是很强大的。数据工作者平时也离不开正则表达式。对此,特意做了个hive正则表达式的小结。所有代码都经过亲测,正常运行。

1.regexp

语法: A REGEXP B

操作类型: strings

描述: 功能与RLIKE相同

selectcount(*)fromolap_b_dw_hotelorder_fwherecreate_date_widnotregexp'\\d{8}'

与下面查询的效果是等效的:

selectcount(*)fromolap_b_dw_hotelorder_fwherecreate_date_widnotrlike'\\d{8}';

2.regexp_extract

语法: regexp_extract(string subject, string pattern, int index)

返回值: string

说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。

hive> select regexp_extract('IloveYou','I(.*?)(You)',1) from test1 limit1;

Total jobs =1

。。。

Total MapReduce CPU Time Spent:7seconds340msec

ok

love

Time taken:28.067seconds, Fetched:1row(s)

hive> select regexp_extract('IloveYou','I(.*?)(You)',2) from test1 limit1;

You

hive> select regexp_extract('IloveYou','(I)(.*?)(You)',1) from test1 limit1;

I

hive> select regexp_extract('IloveYou','(I)(.*?)(You)',0) from test1 limit1;

IloveYou

hive> select regexp_replace("IloveYou","You","") from test1 limit1;

Ilove

3.regexp_replace

语法: regexp_replace(string A, string B, string C)

返回值: string

说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符,类似oracle中的regexp_replace函数。

hive> select regexp_replace("IloveYou","You","") from test1 limit1;

Ilove

hive> select regexp_replace("IloveYou","You","lili") from test1 limit1;

Ilovelili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值