1

URL を処理する高性能アプリケーションがあります。すべての URL について、事前定義されたプールから適切な設定を取得する必要があります。すべての設定オブジェクトは、これらの設定を使用する URL を示す URL パターンに関連付けられています。一致ルールは次のとおりです。

  1. 「google.com」一致パターンは、google ドメインを指すすべての URL と一致する必要があります (したがって、maps.google.com と www.google.com/match が一致します)。
  2. 「*.google.com」は、google.com のサブドメインを指すすべての URL と一致する必要があります (したがって、maps.google.com は一致しますが、google.com と www.google.com は一致しません)。
  3. 「maps.google.com」は、この特定のサブドメインを指すすべての URL と一致する必要があります。

上記のルールとは別に、すべての一致ルールにはパスを含めることができます。つまり、URL のパス部分は一致ルールのパスで開始する必要があります。したがって、「*.google.com/maps」は「maps.google.com/maps」と一致しますが、「maps.google.com/advanced」とは一致しません。

ご覧のとおり、上記のルールは重複しています。同じ URL に一致する 2 つのルールが存在する場合、最も具体的なルールが適用されます。上記のリストは、最も具体的でないものから最も具体的なものの順にランク付けされています。

これは非常に標準的な問題であるように思われるため、自分でプログラムするのではなく、既製のライブラリを使用することを望んでいました。Google はいくつかのオプションを明らかにしていますが、それらを選択する明確な方法はありません。このタスクに適したライブラリとして何をお勧めしますか?

ありがとう、ボアズ

4

1 に答える 1

1

これを解決するために特定のライブラリが必要だとは思いません。標準の Java API には、あまり手間をかけずにコードを作成するために必要なものがすべて含まれています。

java.util.regex.Pattern を見て、各ルールに一致させるために必要な正規表現を見つけてください。また、java.net.URL を使用して、URL からさまざまなフィールドを解析することもできます。

複数のパターンが URL に一致するシナリオを処理するための優先スキームがあると既に述べたので、それがこのパズルの最後のピースになるはずです。

それはかなり簡単な作業のように見えます。

于 2010-06-17T04:52:03.663 に答える