2016-09-12 138 views
0

編碼的網址,我有以下URL解析與正則表達式

https://example.com/external-image/http://www.thirdpartyexample.com/TWM/param/param/param/image.jpg

編碼它看起來像這樣

https://example.com/external-image/http%3A%2F%2Fwww.thirdpartyexample.com%2FTWM%2Fparam%2Fparam%2Fparam%2Fimage.jpg

我試圖解析後的外部形象的一切。

我的目標是$ 1 =http%3A%2F%2Fwww.thirdpartyexample.com%2FTWM%2Fparam%2Fparam%2Fparam%2Fimage.jpg

和$ 2 = thirdpartyexample.com

我正則表達式迄今。

^.*?\/external-image\/((?:https?[%3A][%2F][%2F])?(?:[^@\n][email protected])?(?:www\.)?([^:[%2F]\n]+).*)$ 

和我非工作的例子可以在這裏https://regex101.com/r/qL3qT7/1

找到工作的正則表達式當URL進行編碼。

^.*?\/external-image\/((?:https?:\/\/)?(?:[^@\n][email protected])?(?:www\.)?([^:\/\n]+).*)$ 

我需要做什麼才能獲得正則表達式來識別編碼參數?我認爲也許將它們分組會起作用,但這似乎也不起作用。

回答

1

您可以使用這樣的事情(根據您提供的輸入/輸出):

.+external-image\/((?:https?%3A%2F%2F)?(?:www\.)?(.+?\..+?)%2F.+) 

它會匹配到你關心的URL部分的開頭,使用可選協議字符串,然後將您關心的基本網址放在$1以及完整(編碼)網址$2中。

+0

感謝您的快速回復。看起來很完美。 –

+0

@CodeJunkie:我爲$ 1放置捕獲組的一個小錯誤。現在應該修復。 –