2015-08-15 48 views
0

對於所有的正則表達式專家!我想弄清楚如何使用正則表達式將我的網址分爲多個部分。正則表達式組

例子:

site.com/user/account/info/settings 

我希望能夠捕捉到user/accout/info網址/settings

任何人都可以接受這個挑戰,並好心地幫我嗎?謝謝!

+0

什麼是可能的輸入 - 是它總是「site.com/user /帳戶信息/」? – Markus

+0

不可以。網址也可以是其他人。像「site.com/foo/bar/baz/settings」一樣。等.. – Nova

+0

你總是想刪除最後一個元素?參數是否可能(如「?hgttg = true&everythiing = 42「)?請提供您想要覆蓋的可能場景列表,以及您想要提取哪些場景... – Markus

回答

0

如果你想獲得的URL的開始試試這個:

(\/.*\/(?!.*\/.+)) 

輸入:

site.com/foo/remove-me/
site.com/user/帳戶/信息/設置
site.com/foo/bar/remove-me
site.com/foo/remove-me?param1=true &參數2 =你好+世界

輸出:

/富/
/用戶/帳號/信息/
/富/酒吧/
/富/

https://regex101.com/r/yI5rG4/2

後考慮你的帖子下的所有評論,我明白喲你想得到控制器名稱提取的最後一段。因此,嘗試這個辦法:

(?:\/(?!.*\/.+))([^\?\n]*) 

使用這些輸入:

site.com/foo/remove-me/
site.com/user/account/info/settings
site.com /富/酒吧/卸下我
site.com/foo/remove-me?param1=true & param2的=你好+世界

組1輸出:

刪除-ME/
設置
刪除,我
刪除,我

測試在這裏:https://regex101.com/r/kR5tX6/2

+1

確切我在找什麼!非常感謝Markus! – Nova

+0

第一個完美的工作!但是,你如何刪除尾部和尾部的斜線'/ /(。*)\ /(?!。* \ /.+)''/用戶名/帳號/信息' – Nova

+0

對不起, – Markus