2014-06-24 77 views
0

我見過很多從URL或路徑獲取文件名的例子,但無法解決這個問題。獲取文件名,不帶有條件的URL擴展

我有一個看起來像以下網址:

http://www.bob.net/john/john/ken/mary.html 

我需要得到Mary如果在URL中同時存在/john/john。否則,我需要得到ken如果僅僅/john路徑存在

我可以mary\/\w*\/\w*\/(\w*)\/(\w*)但是這是4號斜線後Mary是依賴。

我該如何做到這一點?

編輯 - 感謝迄今的迴應。

如果/ url存在於url中,是否有可能使這種動態變得更好?不管別的什麼?

+0

檢查字符串是否包含'/ john/john' - 如果是,則獲取'mary':'(\ w +)$'。否則,如果檢查字符串是否包含'/ john' - 如果爲true,則獲取'ken':'([^ \ /] +)\/[^ \ /] + $'。 –

回答

0

嘗試這種模式
^.*?[^\/]\/([^\/]+)\/(?:\1\/[^\/]+\/([^\/.]+)|([^\/]+))
Demo你要找的是第二個捕獲組

+0

謝謝你,這很棒,很快。如果/ john存在於url中,是否有可能使這種動態變爲正常狀態?不管別的什麼? – user3772597

0

要獲得Mary如果John是在路徑,John否則,使用此:

^(?=.*john).*(mary)|.*(ken) 

如果匹配,檢查match[1]match[2]:只有一個將被設置。

在Perl和PCRE中,您可以使用條件或分支重置來更緊湊地執行此操作。

相關問題