通过正则表达式过滤网址

时间:2014-12-21 17:58:53

标签: regex nutch

鉴于这些种子网址:

http://greenbook.americansalon.com/cat/Haircolor.htm
http://greenbook.americansalon.com/cat/Cosmetics.htm
http://greenbook.americansalon.com/cat/Shampoos-and-Conditioners.htm

我想通过仅符合以下规则的网址抓取(通过Nutch 1.4):

  • 只有" Haircolor","化妆品"和#34;洗发水和护发素" (作为种子网址)。即在http://greenbook.americansalon.com/cat/之后,其他任何内容都无法进入网址。
  • 任何http://greenbook.americansalon.com/company/...都是可以接受的。
  • 除了" greenbook.americansalon"以外的任何网站。是可以接受的。

当然,提及种子网址并不能保证,因为可以从中获取其他类别。

我想要一个正则表达式否定:

http\:\/\/greenbook\.americansalon\.com\/([leaf|cat]+\/[^Haircolor|Cosmetics|Shampoos].*)

并合并

http\:\/\/greenbook.americansalon.com\/company\/.*

和任何其他网站(.+) - (例如 - http://www.spilo.com/index.asp也应该被捕获)。

换句话说 - 按照我提到的规则,给我所有网址(包括除#34; greenbook.americansalon"之外的其他域名)。

3 个答案:

答案 0 :(得分:1)

好像你想要这样的东西,

http\:\/\/greenbook\.americansalon\.com\/(?:(leaf|cat)\/(?:Haircolor|Cosmetics|Shampoos)\b|company\b).*

DEMO

答案 1 :(得分:1)

此正则表达式根据您的规则匹配有效的URL:

http((\:\/\/greenbook\.americansalon\.com\/(((leaf|cat)\/(Haircolor|Cosmetics|Shampoos))|company\b).*)|(s?\:\/\/(?!greenbook\.americansalon\.com).*))

Online demo

答案 2 :(得分:0)

如果你想要单独的正则表达式。然后第一个可以是:

http\:\/\/greenbook\.americansalon\.com\/leaf|cat\/(?=Haircolor|Cosmetics|Shampoos).*

其他两个看起来很好。