У меня есть высокопроизводительное приложение, которое работает с URL-адресами. Для каждого URL-адреса необходимо получить соответствующие настройки из предопределенного пула. Каждый объект настроек связан с шаблоном URL-адреса, который указывает, какие URL-адреса должны использовать эти настройки. Правила соответствия следующие:
- Шаблон соответствия "google.com" должен соответствовать всем URL-адресам, указывающим на домен google (таким образом, карты maps.google.com и www.google.com/match совпадают).
- "*.google.com" должен соответствовать всем URL-адресам, указывающим на поддомен google.com (таким образом, maps.google.com соответствует, а google.com и www.google.com - нет).
- «maps.google.com» должен соответствовать всем URL-адресам, указывающим на этот конкретный поддомен.
Помимо приведенных выше правил, каждое правило соответствия может содержать путь, а это означает, что часть пути URL-адреса должна начинаться с пути правила соответствия. Итак: «*.google.com/maps» соответствует «maps.google.com/maps», но не «maps.google.com/advanced».
Как вы можете видеть, приведенные выше правила перекрываются. В случае, если существуют два правила, соответствующие одному и тому же URL-адресу, должно применяться наиболее конкретное. Приведенный выше список ранжирован от наименее конкретного к наиболее конкретному.
Это кажется настолько стандартной проблемой, что я надеялся использовать готовую библиотеку, а не программировать себя. Google показывает несколько вариантов, но без четкого способа выбора между ними. Что бы вы порекомендовали в качестве хорошей библиотеки для этой задачи?
Спасибо, Боаз