前一段時間我問了一個關於使用正則表達式從特定目錄中的URL中提取匹配的問題。如何使用正則表達式排除目錄?
如:www.domain.com/shop/widgets/match/
給出的解決方案是^/shop.*/([^/]+)/?$
這將返回"match"
然而,我的文件結構發生了變化,我現在需要的是,而不是在任何目錄中排除"pages"
返回"match"
表達和"system"
基本上我需要一個表達式,將返回"match"
以下:
www.domain.com/shop/widgets/match/
www.domain.com/match/
但不是:
www.domain.com/pages/widgets/match/
www.domain.com/pages/
www.domain.com/system/widgets/match/
www.domain.com/system/
我一直在掙扎了好幾天沒有任何運氣。
謝謝
爲什麼不只是使用兩個正則表達式,一個是你現在使用的,另一個用來檢查URL中是否有「pages」或「system」這個單詞。 – 2012-04-01 04:13:11
'^/shop。* /([^ /] +)/?$'完全不符合「www.domain.com/shop/widgets/match /」。然而,它會匹配'/ shop/widgets'。您可以使用'/^[a-z0-9 .-] + \/shop \/[^ \ /] + \ /([^ \ /] +)\/$ /'從該URL中提取「匹配」段爲'\ 1'。我正在跳過斜槓,因爲我也使用斜線作爲分隔符。如果您不需要分隔符,則不需要跳過斜槓。 – Graham 2012-04-01 04:14:19
@jb嘿,這是一個好主意。我會放棄這一點。但我很想看到它是如何在一個表達式中完成的。 – Matt 2012-04-01 04:29:00