2017-11-30 12 views
0

URL書き換えにC#/ ASPNET Core 2.0でRegExを使用しています。基本的に私はこれにマッチする必要があります:正規表現でURL書き換えが発生する

blocked\/([a-z]{1,3})\/?([a-zA-Z0-9]+)\/(.*)\/? 

しかし、それは期待どおりに動作していません。

/blocked/en/test1/ 
/blocked/en/test1/test2/ 
/blocked/en/test1/test2 
/blocked/en/ 
/blocked/eN/test1 

マッチ1:test1の マッチ3: 試合2エン私は次のように一致する必要がマッチ2または3が欠落している場合test2は

、またはちょうど3、私はまだ一致します。したがって、次のようにする必要があります。

/blocked/en/test1/ - MATCH en, test1 
/blocked/en/test1/test2/ - MATCH en, test1, test2 
/blocked/en/test1/test2 - MATCH en, test1, test2 
/blocked/en/ - MATCH en 
/blocked/en/test1 - MATCH en, test1 

また、後続のスラッシュを無視する必要があります。基本的にはどのような組み合わせでも一致するはずです。

https://regex101.com/r/Bvm9yl/2/

任意の提案は、説明と一緒に、歓迎されます。ありがとう!

+0

に役立ちます "しかし、期待どおりに動作していない。" はどのような平均? – ViRuSTriNiTy

答えて

2

私は、これは何が必要だと思う:

(?<=\/blocked\/)([a-zA-Z]{1,3})\/(\w+)?\/?(\w+)?\/? 

Demo

式図:

enter image description here

+0

あなたは正しい目標を達成する – csharpcoder

+0

これは私が必要としていたものです。私は日常的に正規表現を使用していますが、何らかの理由でこれに失敗しました。ありがとうございました! – mackhax0r

0

ソリューションは、このような場合には非常に簡単です、それはで行うことができます2つのステップ:

手順:

1. Extract the pattern using regex. 
    pattern = "blocked\/.*" 
2. Split the string based on "/" , and all take entries other than first i.e blocked 

希望これは

関連する問題