2012-02-08 619 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