2016-09-16 18 views
0

でURLを短縮:私は今、何をしたいかは、個別に、私は次の構造のURLを持っているハイブ

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を使用してそれを達成しようとしましたが、この方法は、私だけは、同じ位置に常にある特定の部分を抽出することができます。

大きな問題は、切り抜きたい部分が個別/ルールベース(ロケールは常に2つの小文字と2つの大文字がアンダースコアで区切られています)すなわちトークン)。

さらに、私の結果セットには、既存の部分のみを切り詰めたい別のパターンのURLも含まれています(https://pinball.globalzone.com/en_US/forgottenPassworden_US/のみ切り捨てる必要があります)。

問題をすばやく解決しなければならない場合は、URLを取得して、取得URLを分割して配列全体を反復処理するJavaまたはRコードを記述します。しかし、この結果をHiveからまっすぐに得るためのよりエレガントな方法があるかどうかは疑問でした。

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

についてそれはあなたが不要なように説明しました部品と一致して何

+0

は、常に最初のパラメータトークンですか? – ClasG

+0

2番目の例で 'https://'を削除してはいけませんか? – ClasG

+0

はい、 'tic ='は常にトークンを識別します。 2番目の例は、何かをカットする前のベースURLを表しています。しかし、はい、 'https:// 'も削除する必要があります。 – jd1338

答えて

1

。それを空の文字列に置き換えると、あなたの望むものが残されます。

See it here at regex101

編集

tic=をチェックするために更新しました。より安定させるべきです。

そして、それはあなたが望むものかどうかは分かりませんが、この1つはtic=は任意のパラメータだけでなく、最初にすることができます:

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

Here at regex101

+0

ありがとうございます。 – jd1338

関連する問題