匹配URL的正则表达式,如果它包含一个模式但不包含另一个模式

时间:2011-11-04 03:00:46

标签: regex web-crawler

我需要创建一个正则表达式模式,该模式将匹配包含String1但不包含String2的所有url。问题是URL可以包含String1和String2。例如,如果抓取电子商务网站,我想收集目录页面而不获取产品网址。

示例目录URL:http://www.domain.com/catalog/name String1:catalog

示例产品网址:http://www.domain.com/catalog/name/product/id => String2:产品

使用上面的示例网址,String1是“catalog”,String2是“product”。我目前获取目录网址的模式是\/catalog(?:\/[\w-\/]*)?$

如何扩展此模式以跳过包含String2的所有URL?

1 个答案:

答案 0 :(得分:0)

我猜您正在寻找negative look ahead

例如,这个正则表达式:

catalog\/name\/(?!product)

匹配(example):

http://www.domain.com/catalog/name/produc/id

但是,它不匹配(example):

http://www.domain.com/catalog/name/product/id

希望这有帮助!