我有以下结构的网址:
https://pinball.globalzone.com/en_US/home?tic=1-dj33jl-dj33jl&goToRegisterNow=true
我现在要做的是缩短网址,以便能够对类似的网址格式进行分组和计数。例如,我想在保留其余内容的同时剪切https://
,区域设置en_US/
和令牌?tic=1-dj33jl-dj33jl
。结果应如下所示:
pinball.globalzone.com/home&goToRegisterNow=true
我试图通过使用regexp_extract
来实现这一点,但这种方法只能让我提取总是在同一位置的特定部分。
更大的问题是我要删除的部分是基于个人/规则的(即,语言环境总是包含两个小写字母和两个用下划线分隔的大写字母)或唯一没有保证长度的部分(即令牌)。
此外,我的结果集还将包含具有不同模式的URL,其中我只想剪切现有部分(例如https://pinball.globalzone.com/en_US/forgottenPassword
,其中只需要剪切en_US/
。
如果我必须快速解决问题,我只需要获取URL并编写一些Java或R代码,将获取的URL分成几部分并遍历数组,同时删除我不需要的所有部分。但是,我想知道是否有一种更优雅的方法可以直接从Hive获得这个结果。
答案 0 :(得分:1)
怎么样?
(?:https?:\/\/|\/[a-z]{2}_[A-Z]{2}|[?&]tic=[^&?]*)
它与您描述为不需要的部分相匹配。用空字符串替换它应该会留下你想要的东西。
修改强>
已更新以检查tic=
。应该让它更稳定。
我不知道这是不是你想要的,但是这个允许tic=
成为任何参数,而不仅仅是第一个参数:
(?:https?:\/\/|\/[a-z]{2}_[A-Z]{2}|[?&]tic=[^&?\n]*)