0

true一致したときに戻る関数など、同様のパターンで URL を認識する方法が必要です

http://mysite.com/page/123
and
http://mysite.com/page/456

また

http://mysite.com/?page=123
and
http://mysite.com/?page=456

また

http://mysite.com/?page=123&param=2
and
http://mysite.com/?page=456&param=3

ここで URL の有効性をチェックする必要はありません。パターンが同じかどうかを確認するだけです。おそらく正規表現が必要ですが、その方法がわかりません。誰でも助けることができますか?ありがとう。

4

3 に答える 3

3

文字列間の類似性を見つけるために使用されるレーベンシュタイン距離http://www.dotnetperls.com/levenshteinを試すことができるかもしれません 。

于 2012-06-05T10:56:20.967 に答える
2

最小共通サブシーケンス アルゴリズムを使用し、いずれかの文字列の長さで割ります。それが任意の数を超えている場合、それらは十分に一般的です。

于 2012-06-05T10:03:21.960 に答える
2

具体的な答えではありませんが、これを一般的な意味でうまく機能させたい場合は、コンテンツを意識する必要があると思います。つまり、各 URL をサブセクションに分割する必要があります。

  • プロトコル
  • ドメイン
  • クエリ文字列

...そして、それぞれ別々に処理します。許容されるあいまいさのレベルによって、URL をどの程度分割する必要があるかが決まりますが、各セクションは (私が感じるには) 非常に具体的な検査が必要です。プロトコルとドメインは単純な文字列の一致である可能性がありますが、パスはおそらく「/」で分割され、基本的な長さのチェックの後、同じ深さの項目のみを比較して要素を 1 つずつ比較できます (直接の等値または "前述のレーベンシュタイン距離のように距離を変更します)。クエリ文字列は、「&」で分割してから「=」で分割するだけで辞書に分割でき、必要に応じて並べ替えや比較を行うことができます。これは、並べ替えられたクエリ文字列パラメーターに関する@MarcGravellの質問も満たします。

于 2012-06-05T11:18:42.503 に答える