2011-06-21 12 views
0

RegExの問題があります。以下のURLを考えてみましょう:RegExを使用したURLの書き換え

http://ab.cdefgh.com/aa-BB/index.aspx

私が言う、それは が特定値の数が一致しない場合は、 "AA-BB" を見て、正規表現を必要とする:

rr-GG 
vv-VV 
yy-YY 
zz-ZZ 

URLは一部の場所にリダイレクトされます。例: http://ab.cdefgh.com/notfound.aspx

私はurlrewriteルールを持っています。私はどのような 正規表現がタグの間にあるか知る必要があります。

<urlrewrites> 
     <rule> 
     <url>?</url> 
     <rewrite>http://ab.cdefgh.com/notfound.aspx</rewrite> 
     </rule> 
</urlrewrites> 

答えて

0

あなたがのための潜在的な気にしないと仮定すると、パターンは単純にしているなど、

http:\/\/ab\.cdefgh\.com\/(?:aa\-BB|rr\-GG|vv\-VV|yy\-YY|zz\-ZZ)\/index\.aspx 

AA-BB「または」:置換パターンは、ドメイン名やディレクトリ構造の他のいくつかのレベルにあるように、これはあなたが興味のあるパターンで選択します|演算子を使用して一緒に編集します。

は、さらに、これをばらばら/.のすべて、および-文字が構文としてそれらを解釈から正規表現を防ぐために\でエスケープする必要があります。 (?:という表記法は、逆参照変数に格納せずに「または」編集されたものをグループ化することを意味します(選択した値を保持することを気にしない場合は、より効率的になります)。ここで

がデモへのリンクです

http://rubular.com/r/UfB65UyYrj

0

これは役に立ちますか?

^([a-z])\1-([A-Z])\2.* 

それは一致します。

uu-FF/ 
aa-BB/ 
bb-CC/index 

しかし、(コメントに基づいて編集)


ない

aaBB 
asdf 
ba-BB 
aA-BB 

ジャストパイプ区切るご希望のURL内()の側で特殊文字をエスケープします。

例:

^(xx-YY|yy-ZZ|aa-BB|goodStuff)/.* 

しかし、私は他のすべてのnotfound.aspxに行くように、あなたが実際に、あなたが指定したURL以外のものと一致した次のことをしたいかもしれないと思う:

^[^(xx-YY|yy-ZZ|aa-BB|goodStuff)]/.* 
+0

おかげヤコブを(多分これはあなたがここにあなたがしたい正確にどの文字の組み合わせに到達するために正規表現で遊ぶことができます)。いいえ、それはいいです。しかし、私はそれは、UPPERだけでなく、特にxx-XX、yy-YY、zz-ZZ(例えば)、その他すべての値(aa-AA、bb-BB) 、cc-CCなど)が一致しないため、見つからないURLにリダイレクトされます。 –

+0

もう一度Jacobに感謝します。申し訳ありませんが、私は本当に正規表現の男ではありません。どのように私は完全なURLが評価されることを確認し、正規表現がどこにあるかを "ここで"表現します。 http://ab.cdefgh.com/HERE/index.aspx –

+0

最初の "^"はURIの先頭を意味します(最初の/の後に続く部分)。次の部分は[^(ドン ' tmatchthis | orthis | orthisone)]は試合の次の部分です。 []内の "^"は、そこにあるものと一致しないことを意味します。最後に、 "/.*"は "/"の後に任意の数の文字を続けます。 –

0

はあなたと仮定すると、 YY-YYとZZ-ZZ XX-XXが、何かが、リダイレクトする:

[^(xx\-XX)|(yy\-YY)|(zz\-ZZ)] 
関連する問題