原始数据 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 用正则表达式替换掉,同时不能替换掉 v2、30d 中的数字,最终的 Hive SQL:
SELECT regexp_replace(regexp_replace(url, '\/\\d+\/', '/{id}/'), '\/\\d+$', '/{id}')
FROM db.table;
说明:
- 无法通过
\/\\d+[\/|$]一次匹配出来,因为正则的[]中不能写$,可参考:https://stackoverflow.com/a/32316371/11235455 - 关于转义:
a. 原始正则是:\/\d+,可参考:https://regex101.com/r/wqqKyA/1
b. Java 转义:\\/\\d+(正则中的每一个\都需要用\\替换),可参考:https://regex101.com/r/wqqKyA/1/codegen?language=java
c. Hive 转义:\/\\d+😵😵😵
本文介绍如何在HiveSQL中使用正则表达式处理RESTful URL,实现特定ID部分的替换,同时避免误替换数字字符,提供详细的正则表达式构造方法及示例。
707

被折叠的 条评论
为什么被折叠?



