2011-08-17 62 views
0

我想匹配一個url,但只想選擇部分url。那可能嗎?正則表達式幫助,匹配長字符串,選擇子字符串

IE:網址是這樣的:

http://www.domain.com/link/88cbdgb7fwndkedl/ 

我正則表達式看起來像這樣:

@"http://www.domain.com/link/([a-zA-Z0-9]+)/" 

,我希望只返回的ID,而是它抓住了整個URL 。

有什麼建議嗎?

編輯:使用C#Regex.Matches()

+0

什麼語言?問題不在於你的正則表達式,而可能只是你使用整個比賽而不是捕獲的組。 – Vache

+0

編輯我的回答 – MattoTodd

回答

1
Match match = Regex.Match(input, @"http://www.domain.com/link/([a-zA-Z0-9]+)/") 
string key = match.Groups[1].Value; 
+0

因此,是「Group [0]」完全匹配,還是「Group [1 ... etc等]'連續組? – MattoTodd

+0

是的,每種語言都差不多 –

0

比賽將是整個URL(什麼是正則表達式指定)

你需要提取相應的組。

喜歡的東西:

foreach(Match m in matches){ 
m.Groups[1]; 
} 
1

幾乎所有的正則表達式的解決方案,讓你獲得一個組。你會發現在組1

等着你的括號部分如果您無法使用組打擾,那麼你可以使用正向後看:

(?<=http://www.domain.com/link/)[^/]+ 

但說實話...嘗試使用組。這是一個很好的功能。 :-)

在C#中,它是:

Match match = Regex.Match(input, @"http://www.domain.com/link/([a-zA-Z0-9]+)/"); 

if (match.Success) { 
    string key = match.Groups[1].Value; 
}