Hive regexp_replace 替换 RESTful URL 中的 id

原始数据 url 字段保存 RESTful URL 的数据,有下面这几种形式

http://host.name/v2/type/44/things
http://host.name/v2/type/44
http://host.name/v2/type/30d-hot

需要将其中的 44 这种 id 用正则表达式替换掉,同时不能替换掉 v230d 中的数字,最终的 Hive SQL:

SELECT regexp_replace(regexp_replace(url, '\/\\d+\/', '/{id}/'), '\/\\d+$', '/{id}')
FROM db.table;

说明:

  1. 无法通过 \/\\d+[\/|$] 一次匹配出来,因为正则的 [] 中不能写 $,可参考:https://stackoverflow.com/a/32316371/11235455
  2. 关于转义:
    a. 原始正则是:\/\d+,可参考:https://regex101.com/r/wqqKyA/1
    b. Java 转义: \\/\\d+(正则中的每一个 \ 都需要用 \\ 替换),可参考:https://regex101.com/r/wqqKyA/1/codegen?language=java
    c. Hive 转义:\/\\d+ 😵😵😵
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值