2017-02-02 10 views
1

のために働いていない私は(唯一の違いは?前の最後のスラッシュのです)、私は単一のパターン(正規表現)を作成する必要があり、そのため、同じURLの2形式があります。したがって、同じパターンでURLの両方のバリエーションを処理できます。パターンは、書き換えルール

  • products/dispenser/hand-towel?gclid=CPDv
  • products/dispenser/hand-towel/?gclid=CPDv

私は第一URLのために正常に動作しますが第二URLのために働いていないされ、パターンの下に使用しようとしています。

  • ^products/([^/]+)/([^/]+)/?$

私はパターン以下のいくつかのより多くを試みたが、成功を取得できませんでした。私は第一のURLから取得しています私は、出力の下に取得したいと同じパターンを使用することにより

  • ^products/([^/]+)/([^/]+/.*| /?$)
  • ^products/([^/]+)/([^/]+)(^/?)$
  • ^products/([^/]+)/([^/]+)/?$

  • {R:1} Dispenser
  • {R:2} hand-towel?gclid=CPDv

と第二URLから私は、出力

  • {R:1} Dispenser
  • {R:2} hand-towel/?gclid=CPDv
の下に取得する必要があります

私は、URL

  1. products/dispenser/hand-towel?gclid=CPDv
  2. products/dispenser/hand-towel/?gclid=CPDv
  3. products/dispenser/hand-towel

  4. products/dispenser/hand-towel/hand-roll?gclid=CPDv

  5. products/dispenser/hand-towel/hand-roll/?gclid=CPDv
  6. products/dispenser/hand-towel/hand-roll
  7. の6種類を持って

だから、上記のすべてのURLが同一ページに上陸しますが、最初の3つのURLはその後、ヒットされる場合、私はR1とR2としてdispenserHand-towelを必要とし、第四、第五及び第六のURLは、私にヒットされた場合R1、R2およびR3としてdispenserhand-towelhand-towel-rollを必要としています。

^products/([^/]+)/([^/]+)/?$パターンのみURL 4,5及び6のためのR3パラメータを識別することができなくなり、このパターンとして1,2 URLのであるが。

一方、^products\/([^\/]+)\/([^\/]+)\/(.+)$のパターンは第1のURLでは機能しません。

+0

@Fallenヒーロー:あなたの努力に感謝します。 まだ出力の一部が欠落していますので、より明確にするために質問を更新しました。を参照してください。 – user3305540

答えて

3

あなたの問題は最後に$です。これはend of lineを意味しますが、まだ一致させたいのは?gclid=CPDvです。

こちらをご覧ください:https://regex101.com/r/SkHXWH/2

キャプチャグループはあなたの手掛かりを与えるだろう。

なぜあなたはちょうどこれをしない:

^products\/([^\/]+)\/(.+)$ 
      ^^^R1^^ ^R2^ 

コメント

^products\/([^\/]+)\/([^\/]+)\/(.+)$ 
      ^^^R1^^^ ^^^R2^^^ ^R3^ 

かで述べたように、これは希望出力/キャプチャグループ

あなたのurlに

にあなたを与えるだろう2グループのみ

^products\/([^\/]+)\/(?:[^\/]+)\/(.+)$ 
      ^^^R1^^^    ^R2^ 
+0

それは両方のURLで動作しているようですが、新しいURLを作るためにこれらのr1とr2を使う必要があるので、ここでは{R:1}と{R:2}を与えています。 – user3305540

+0

このURLに何を追加する必要がありますか?製品/ディスペンサー/ハンドタオル/ハンドタオルロール/?gclid = CPDv – user3305540