2011-11-04 170 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 

希望這有助於!

相關問題