0


hive 正则表达式

regexp_extract

:字符串正则表达式解析函数,返回值为字符串string类型。

regexp_extract可用于一般截取函数substr无法使用的一些复杂场景。

用法:regexp_extract(str, regexp[, idx])

str:被解析的字符串或字段名
regexp:正则表达式
idx:是返回结果索引,取表达式的哪一()部分<子表达式>,默认值为1
0表示把整个正则表达式对应的结果全部返回;
1表示返回正则表达式中第一个() 对应的结果, 以此类推
注意:idx的数字不能大于表达式中()的个数,否则报错
应用场景:

解析单个字符串;
字段值粒度太细,需要粗粒度分组聚合/比较时;
示例5:version版本字段值:[1级].[2级].[3级](1,2,3级取值范围:0~99)
示例6:字段值不规范,提取有效部分

code 结果
1.select regexp_extract(‘hitdecisiondlist’,‘(i)(.?)(e)‘,0) itde
2.select regexp_extract(‘hitdecisiondlist’,’(i)(.
?)(e)’,1) i
3.select regexp_extract(‘hitdecisiondlist’,’(i)(.*?)(e)’,2) td
4.select regexp_extract(‘x=a3&x=18abc&x=2&y=3&x=4’,‘x=([0-9]+)([a-z]+)’,0) x=18abc
5.select cast(regexp_extract(version,‘^([0-9]+)’,0) as BIGINT) <6 取1级版本小于6的
6.select regexp_extract(app_version,‘^([0-9]+).([0-9]+).([0-9]+)’,0) 清洗数据

–去除小数点后面的0

select regexp_replace(regexp_replace(cast(106.0000 as string),“0*

     " 
    
    
    
      , 
     
     
     
       ′ 
      
     
       ′ 
      
     
    
   
     ) 
    
   
     , 
    
   
     " 
    
    
   
     . 
    
   
  
    ",''),"\\. 
   
  
",′′),".”,‘’)

,regexp_replace(regexp_replace(cast(100.31000 as string),“0*

     " 
    
    
    
      , 
     
     
     
       ′ 
      
     
       ′ 
      
     
    
   
     ) 
    
   
     , 
    
   
     " 
    
    
   
     . 
    
   
  
    ",''),"\\. 
   
  
",′′),".”,‘’) --106 100.31

将xxxx年xx月xx日转为 xxxxxxxx

select ‘2024年5月6日公告: 根据公司《可转债募集说明书》的规定:在本次发行的可转换公司债券期满后5个交易日内,公司将以本次可转债票面面值上浮6%(含最后一期利息)的价格向投资者赎回全部未转股的可转债。即“三力转债”到期合计兑付价格为106元/张(含最后一期利息,含税)。 2024年6月1日公告: 1、“三力转债”到期日和兑付登记日:2024年6月7日(星期五) 2、“三力转债”到期兑付价格:106元/张(含最后一期利息,含税) 3、“三力转债”到期兑付资金发放日:2024年6月11日(星期二) 4、“三力转债”摘牌日:2024年6月11日(星期二) 5、“三力转债”最后交易日:2024年6月4日(星期二) 6、“三力转债”最后转股日:2024年6月7日(星期五)

,regexp_extract(‘2024年5月6日公告: 根据公司《可转债募集说明书》的规定:在本次发行的可转换公司债券期满后5个交易日内,公司将以本次可转债票面面值上浮6%(含最后一期利息)的价格向投资者赎回全部未转股的可转债。即“三力转债”到期合计兑付价格为106元/张(含最后一期利息,含税)。 2024年6月1日公告: 1、“三力转债”到期日和兑付登记日:2024年6月7日(星期五) 2、“三力转债”到期兑付价格:106元/张(含最后一期利息,含税) 3、“三力转债”到期兑付资金发放日:2024年6月11日(星期二) 4、“三力转债”摘牌日:2024年6月11日(星期二) 5、“三力转债”最后交易日:2024年6月4日(星期二) 6、“三力转债”最后转股日:2024年6月7日(星期五)
‘, ‘交易日:+(\d+年\d+月\d+日)’)
,unix_timestamp(regexp_extract(‘2024年5月6日公告: 根据公司《可转债募集说明书》的规定:在本次发行的可转换公司债券期满后5个交易日内,公司将以本次可转债票面面值上浮6%(含最后一期利息)的价格向投资者赎回全部未转股的可转债。即“三力转债”到期合计兑付价格为106元/张(含最后一期利息,含税)。 2024年6月1日公告: 1、“三力转债”到期日和兑付登记日:2024年6月7日(星期五) 2、“三力转债”到期兑付价格:106元/张(含最后一期利息,含税) 3、“三力转债”到期兑付资金发放日:2024年6月11日(星期二) 4、“三力转债”摘牌日:2024年6月11日(星期二) 5、“三力转债”最后交易日:2024年6月4日(星期二) 6、“三力转债”最后转股日:2024年6月7日(星期五)
‘, ‘交易日:+(\d+年\d+月\d+日)’), ‘yyyy年MM月dd日’)
,from_unixtime(unix_timestamp(regexp_extract(‘2024年5月6日公告: 根据公司《可转债募集说明书》的规定:在本次发行的可转换公司债券期满后5个交易日内,公司将以本次可转债票面面值上浮6%(含最后一期利息)的价格向投资者赎回全部未转股的可转债。即“三力转债”到期合计兑付价格为106元/张(含最后一期利息,含税)。 2024年6月1日公告: 1、“三力转债”到期日和兑付登记日:2024年6月7日(星期五) 2、“三力转债”到期兑付价格:106元/张(含最后一期利息,含税) 3、“三力转债”到期兑付资金发放日:2024年6月11日(星期二) 4、“三力转债”摘牌日:2024年6月11日(星期二) 5、“三力转债”最后交易日:2024年6月4日(星期二) 6、“三力转债”最后转股日:2024年6月7日(星期五)
‘, ‘交易日:+(\d+年\d+月\d+日)’), ‘yyyy年MM月dd日’), ‘yyyy年MM月dd日’)
,from_unixtime(unix_timestamp(regexp_extract(‘2024年5月6日公告: 根据公司《可转债募集说明书》的规定:在本次发行的可转换公司债券期满后5个交易日内,公司将以本次可转债票面面值上浮6%(含最后一期利息)的价格向投资者赎回全部未转股的可转债。即“三力转债”到期合计兑付价格为106元/张(含最后一期利息,含税)。 2024年6月1日公告: 1、“三力转债”到期日和兑付登记日:2024年6月7日(星期五) 2、“三力转债”到期兑付价格:106元/张(含最后一期利息,含税) 3、“三力转债”到期兑付资金发放日:2024年6月11日(星期二) 4、“三力转债”摘牌日:2024年6月11日(星期二) 5、“三力转债”最后交易日:2024年6月4日(星期二) 6、“三力转债”最后转股日:2024年6月7日(星期五)
‘, ‘交易日:+(\d+年\d+月\d+日)’), ‘yyyy年MM月dd日’), ‘yyyyMMdd’)
,regexp_extract(regexp_extract(enforcereason, ‘交易日:+(\d+年\d+月\d+日)’),’(\d+)(年)’,1)
,regexp_extract(regexp_extract(enforcereason, ‘交易日:+(\d+年\d+月\d+日)’),’(年)(\d+)(月)’,2)
,lpad(regexp_extract(regexp_extract(enforcereason, ‘交易日:+(\d+年\d+月\d+日)’),’(年)(\d+)(月)’,2),2,‘0’)
,lpad(regexp_extract(regexp_extract(enforcereason, ‘交易日:+(\d+年\d+月\d+日)’),’(月)(\d+)(日)’,2),2,‘0’)
,from_unixtime(unix_timestamp(regexp_extract(enforcereason, ‘交易日:+(\d+年\d+月\d+日)’), ‘yyyy年MM月dd日’), ‘yyyyMMdd’) as enforcereason1 --最后交易日
,concat(regexp_extract(regexp_extract(enforcereason, ‘交易日:+(\d+年\d+月\d+日)’),’(\d+)(年)‘,1),lpad(regexp_extract(regexp_extract(enforcereason, ‘交易日:+(\d+年\d+月\d+日)’),’(年)(\d+)(月)‘,2),2,‘0’),lpad(regexp_extract(regexp_extract(enforcereason, ‘交易日:+(\d+年\d+月\d+日)’),’(月)(\d+)(日)',2),2,‘0’))

在这里插入图片描述


本文转载自: https://blog.csdn.net/KANGBboy/article/details/141036922
版权归原作者 KANGBboy 所有, 如有侵权,请联系我们删除。

“hive 正则表达式”的评论:

还没有评论