2012-02-08 617 views
-1

我試圖根據一組過濾條件來匹配給定的url,該組過濾條件基於哪些url將被接受或丟棄。下面是一個示例模式如何在java中使用通配符進行url匹配


http://test.blogs.com/between_the/ 
http://test.blogs.com/between_the/page* 
http://test.blogs.com/between_the/archives* 
*index.html* 
*/page/* 
http://abc.blogs.com/ 
http://area.test.com/index.php/blogs_a/blog_list/ 
http://area.test.com/index.php/blogs_b/blog_list/*/ 

根據條件,以下網址將被接受


http://test.blogs.com/between_the/2012/02/autocad-ws-update-coming.html 
http://abc.blogs.com/test 
http://area.test.com/index.php/blogs_b/blog_list/page/2 

而那些下面將被過濾


http://test.blogs.com/between_the/page/2 
http://test.blogs.com/index.html 
http://area.test.com/index.php/blogs_b/blog_list/1/ 

只是想知道什麼是最好的辦法這個 ?我不確定這是否可以使用複雜的通用正則表達式來處理,因爲排除模式不可預測。我正在考慮刪除通配符併爲精確匹配創建兩個獨立列表幷包含匹配,然後讓輸入url針對兩個列表進行迭代。

任何指針將不勝感激。

感謝

回答

1

您可以簡單地創建正則表達式的列表,並接受一個URL時,它不符合任何正則表達式的。一旦匹配正則表達式,URL就會被丟棄。這應該比創建單個複雜正則表達式更容易,更易於維護。

+0

感謝您的意見。這肯定是一種處理方式,但我試圖避免它,因爲模式的數量可能很大,最終會爲它們中的每一個創建一個正則表達式模式。而且,這個名單將會越來越多。也許,由於我缺乏正則表達式的經驗,我正在尋求探索一種通用的正則表達式模式或任何其他方式來處理正則表達式。儘管感謝您的建議。 – Shamik 2012-02-08 20:11:52

+0

@Shamik如果您正在尋找更復雜的解決方案,您可以做的是製作前綴 - 後綴模式的層次結構,例如,第一級域名和第二級別子目錄。這樣,您可以管理越來越多的模式,並且仍然具有相對高效的匹配過程。 – shams 2012-02-08 20:15:35