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 的规则,则应应用最具体的规则。上面的列表按从最不具体到最具体的顺序排列。

这似乎是一个标准问题,我希望使用现成的库而不是自己编程。谷歌揭示了几个选项,但没有明确的方法可以在它们之间进行选择。你会推荐什么作为这个任务的好库?

谢谢,波阿斯

4

1 回答 1

1

我认为您不需要特定的库来解决此问题;标准 Java API 拥有编写代码所需的一切,而无需太多工作。

查看 java.util.regex.Pattern 并计算出匹配每个规则所需的正则表达式。您可能还想使用 java.net.URL 从 URL 中解析出不同的字段。

你已经说过你有一个优先方案来处理多个模式匹配 URL 的场景,所以这应该是这个难题的最后一块。

这看起来是一个非常简单的任务。

于 2010-06-17T04:52:03.663 回答