正则表达式以匹配具有6个或更多级别的URL

时间:2013-03-19 16:41:36

标签: java regex nutch

我正在尝试匹配6个或6个以上级别或子路径的网址

http://www.domain.com/level1/level2/level3/level4/level5/level6/level7/level8/level9/level10/level11/level12.html

我想出了一个表达式

^http:\/\/([a-zA-Z\.-]*)\W(\b\w+\b) 

...匹配level1(demo

但是,当我尝试将网址与六个或更多级别匹配时,它似乎不起作用。

^http:\/\/([a-zA-Z\.-]*)\W(\b\w+\b){6,}

demo

2 个答案:

答案 0 :(得分:2)

尝试以下方法:

^http:\/\/([a-zA-Z\.-]*)(\/[\w\.]+){6,}

http://rubular.com/r/QZlidUqheq

答案 1 :(得分:1)

我认为这就是你想要的:

^http://([a-zA-Z.-]+)/(?:[^/]+/){6,}.*$

这匹配六个或更多级别,这就是你在问题中所说的。但是在问题的标题中,你说它“超过六个”。如果这是您真正想要的,请将量词从{6,}更改为{7,}

在旁注中,正斜杠(/)在正则表达式中没有特殊含义,并且不需要进行转义。 Rubular迫使你逃避斜线,因为它是用作正则表达式分隔符的东西。 Nutch使用Java的内置正则表达式,所以你应该使用相同风格的测试器,如this one