当前位置:   article > 正文

hive中的正则表达式及其应用_hive 字符串 正则表达式 与 操作

hive 字符串 正则表达式 与 操作

今天来说一下hive中的正则表达式,主要包含:元字符匹配、位置匹配、频率匹配

1、元字符匹配

(.)   表示匹配除换行符以外的任意字符。

(\w) 表示匹配字母、下划线、数字或汉字(\\W)。

(\d) 表示匹配数字

(\s) 表示匹配任意的空白符

([ ])  表示匹配方括号中任一字符

([^匹配内容]) 表示匹配方括号中任一字符

2、位置匹配

(^) 表示匹配字符串的开始,空值:^$

($) 表示匹配字符串的结束

(\b) 表示匹配单词的开始或结束。

(\B) 表示匹配非单词的开始或结束

3、频率匹配

(*) 表示匹配重复0次或多次

(+) 表示匹配重复一次或更多次

(?) 表示匹配重复0次或1次

({n}) 表示匹配重复n次

({n,}) 表示重复n次或更多次

({n,m}) 表示重复n到m次

正则匹配函数:regexp_extract函数

用法:

regexp_extract(string subject, string pattern, int index)

返回值: string

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

        有了以上基础知识以后,就可以从繁杂的字符中匹配想要的东西,笔者在清洗竞对的房型、解析埋点中,正则表达式发挥了其强大的作用~

下面来看一些实际的案例,为了方便读者实现,这里面可以将filterlist直接替换为数据格式中并加上引号就可以实现相关结果,以方便大家实现和方便理解~

实例一:

场景:在进入到酒店详情页时,想看一下有多少用户会点击“增值税专用发票”这个按钮时,因此需要将埋点表中这个数据解析出来。

数据格式如下,是存在于一个json套json的字段中,如下数据是存放在filterlist字段中:

"[{\"filtertitle\":\"**服务\",\"filtertype\":\"3\",\"filtersubtype\":\"\",\"filtername\":\"增值税专用发票\",\"filterid\":\"3|SpecialInvoiceHotel\"}]"
代码如下:
 

select  regexp_extract(filterlist,'(filtername\\"\\:\\")(\\增\\值\\税\\专\\用\\发\\票)(\\"\\,)',2) as filtername
from AAA
解析结果如下:

实例二:

场景:在分析用户行为数据时,需要将用户在平台筛选的数据进行解析,但是埋点记录的方式是以json字符串的方式存储的,因此需要将埋点数据解析为结构化的数据形式。清洗出filtertype、filtername、filterid、filtertitle等字段。

数据格式如下:

{"filtertype":"29","filtername":"成人Node","filtertitle":"成人Group","filtersubtype":"","filterid":"29|1","filterValue":"1|4"}
{"filtertitle":"钻级","filtertype":"16","filtersubtype":"","filtername":"四钻/高档","filterid":"16|4",}
解析代码如下:

use dw_HHHHHH;
select clientcode
      ,regexp_extract(filterlist,'(filtertype"\\:")(\\d+)(",)',2)               as filtertype
      ,regexp_extract(filterlist,'(filtername"\\:")((\\W*\\w*)|(\\W*))(",)',2)  as filtername
      ,regexp_extract(filterlist,'(filtertitle"\\:")((\\W*\\w*)|(\\W*))(",)',2) as filtertitle
      ,regexp_extract(filterlist,'(filterid"\\:")(\\d+\\|\\d+)(",)',2)          as filterid
from tmp_action_click
结果如下:

        到这里你应该可以发现正则表达式功能的强大,当然在实际工作中用到的案例特别复杂,特别是在清洗竞对的房型时,耗费了大量的脑力~ 笔者在这里只是提供一些简单的案例供大家学习~

 

 
————————————————
版权声明:本文为CSDN博主「数据小白的进阶之路」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_37536446/article/details/81053172

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/605142
推荐阅读
相关标签
  

闽ICP备14008679号