2011-01-25 55 views
0

我確信這很簡單,但我無法弄清楚。RegEx從自定義標記中提取URL,目標和鏈接

我想提取此

Example: 
[http://www.testdomain.com/blog/122_Blog Post.aspx _blank]Click here![/] 

的URL,目標和鏈接我已經試過這樣:

\[(.*) (.*)\](.+?)\[\/\] 

它的工作原理,只要我有_blank_self下面的網址,但如果我一起刪除它,我會得到Post.aspx作爲目標(當然)。

我也試過類似(_blank)?的東西,但那根本不起作用。

請幫忙,RegEx真的不是我的東西,並隨時提出其他改進建議。它不一定是萬無一失的,我只是想保持簡單。

謝謝!

+0

你能否提供更多的例子嗎?其他情況下`_blank`或`_self`的位置是什麼? – Kimvais 2011-01-25 09:05:08

+0

我不能想象其他很多情況,其他目標並不是必須的。這是一個封閉的系統,所以我不必做到萬無一失。只要URL可以包含所有可能的字符,包括空格。 – 2011-01-25 09:18:41

回答

1

試試這個:

\[(.*?)(?: (_blank|_self))?\](.+?)\[\/\] 
+0

謝謝,效果很棒! – 2011-01-25 09:19:00

2
\[(.*?) ?(_[\w\d]+)?\](.+?)\[\/\] 

第一(.*)在你的正則表達式是貪婪的,需要不願(.*?)

用正則表達式有貪婪,不願意和佔有慾預選賽。貪婪是最常見的,但一些特殊情況需要不情願或佔有慾的限定詞。

檢查這個環節,以測試正則表達式 http://www.rubular.com/r/lszC0EWaWM