2016-09-16 78 views
0

網址,我有以下結構的網址:單獨縮短蜂房

https://pinball.globalzone.com/en_US/home?tic=1-dj33jl-dj33jl&goToRegisterNow=true 

我想現在要做的就是縮短的URL能夠組和計數類似的URL模式。例如,我想刪除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

是令牌總是第一個參數? – ClasG

+0

並且不應該在第二個示例中刪除https://? – ClasG

+0

是的,'tic ='總是標識該標記。第二個示例代表切割任何內容之前的基本URL。但是,「https://」也需要刪除。 – jd1338

回答

1

什麼

(?:https?:\/\/|\/[a-z]{2}_[A-Z]{2}|[?&]tic=[^&?]*) 

據你描述爲不需要的部分相匹配。將它替換爲空字符串應該讓你想要什麼。

See it here at regex101

編輯

更新檢查tic=。應該讓它更穩定。

我不知道這是否是你想要的,但是這一次允許tic=是任何參數,不僅是第一個:

(?:https?:\/\/|\/[a-z]{2}_[A-Z]{2}|[?&]tic=[^&?\n]*) 

Here at regex101

+0

非常感謝! – jd1338