あなたが求めることを行うには、グループを使用する必要があります。正規表現グループでは、一致全体の一部を分離できます。
例えば:
input string of: aaaaaaaabbbbcccc
regex: a*(b*)
この場合、括弧はグループをマークします。これは、パターンの最初であるため、グループ 1 になります。
注: グループ 0 は暗黙的であり、完全一致です。
したがって、上記の場合の一致は次のようになります。
group 0: aaaaaaaabbbb
group 1: bbbb
上記のスイーツ パターンで目的を達成するには、最後にグループを配置するだけです。
possible solution: /sweets/(.*)
グループの前にパターンを正確に把握すればするほど、誤検知の可能性が低くなります。
本当に必要なのは、最後の / の後に何かを一致させることである場合は、別のアプローチを取ることができます。
possible other solution: /([^/]*)
上記のパターンは、別の / ではない文字列を含む / を検出し、それをグループ 1 に保持します。ここでの問題は、URL に甘いものが含まれていないものと一致する可能性があることです。
最初の / を気にしない場合は、( と ) を削除するだけで、グループについて心配する必要はありません。
http://regexpal.com/を使用して正規表現をテストするのが好きです。さまざまな一致をさまざまな色でマークします。
お役に立てれば。
元の投稿で要件を誤解した可能性があります。
(http://)localhost/sweettemptations/sweets/* に一致する文字列を変更したいだけの場合
あなたが提供した他のものに(最後に * による部分一致を追加せずに)URLのパターンを一致させるために正規表現を使用しますが、文字列全体を目的のものに盲目的に置き換えます:( http:// )localhost/sweettemptations/利用可能なお菓子
したがって、URL が必要な場合:
http://localhost/sweettemptations/sweets/somethingmore.html
に変わります:
http://localhost/sweettemptations/available-sweets
ではなく:
localhost/sweettemptations/available-sweets/somethingmore.html
次に、ソリューションはより簡単で、グループは必要ありません:)。
これを行うときは、「localhost」の部分と一致しないようにします。また、(http://) は有効なプロトコル プレフィックスではないため、(http://) は前にオプションの http:// を実際に意味すると想定しています。
したがって、それが必要な場合は、次のパターンに一致する必要があります。
(http://)?[^/]+/sweettemptations/sweets/.*
この正規表現は、オプションで http:// の部分をホスト (localhost、IP、またはホスト名) と一致させます。必要に応じて、末尾の .* を省略できます。
そのパターンが一致する場合は、URL 全体をリダイレクト先の URL に置き換えるだけです。