hive 正则表达式

打印 上一主题 下一主题

主题 671|帖子 671|积分 2013

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’))


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表