2011-11-04 137 views
0

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

例目录URL:http://www.domain.com/catalog/name字符串1:目录

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

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

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

+2

最简单的就是使用两个表达式。首先获取你的网址。在第二部分中,看看“产品”是否是URL的子字符串,如果是,请不要使用它。 –

+0

感谢@aleph_null,但是我能够使用'\ /目录(?:\/[\ w - ] *)?(?!。* \/product \ /)来工作“ 它匹配”/ catalog “,然后可以选择满足字母数字字符或连字符的任何部分,除非后面跟着”/ product /“。 –

回答

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 

希望这有助于!

相关问题