0

私は基本的に正規表現についての手がかりはありませんが/、URL の後に何かを認識する正規表現ステートメントが必要です。

基本的に、私は誰かのためにサイトを開発していて、ページの URL (コースのローカル URL) は と言い(http://)localhost/sweettemptations/available-sweetsます。このページには、URL が(http://)localhost/sweettemptations/sweets/sweet-name.

私がやりたいのは、URLを簡単にリダイレクトして(http://)localhost/sweettemptations/sweets戻すことですが、あらゆる種類のスイートを にリダイレクトする必要もあります。にリダイレクトする必要があるとします。(http://)localhost/sweettemptations/available-sweets(http://)localhost/sweettemptations/available-sweets(http://)localhost/sweettemptations/sweets/*(http://)localhost/sweettemptations/available-sweets

URL の sweets/ の後のすべてに一致する適切な正規表現ステートメントを作成する方法を教えてくれる人がいれば、非常にありがたいです。

4

2 に答える 2

1

この正規表現を使用します(?<=://).+

于 2012-08-07T11:43:23.350 に答える
1

あなたが求めることを行うには、グループを使用する必要があります。正規表現グループでは、一致全体の一部を分離できます。

例えば:

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 に置き換えるだけです。

于 2012-08-07T11:51:12.860 に答える