2012-05-07 61 views
0

我有一串有文本的字符串。我需要找到 'site.com/PI/' 和「/500/item.jpg之間是位於所有值在大字符串中獲取分隔符之間的所有值

例子:

String STRING = @" 
http://site.com/PI/0/500/item.jpg 
blah-blah 
http://site.com/PI/1/500/item.jpg 
blah-blah 
http://site.com/PI/2/500/item.jpg 
blah-blah 
http://site.com/PI/4/500/item.jpg 
blah-blah 
http://site.com/PI/8/500/item.jpg 
blah-blah 
http://site.com/PI/6/500/item.jpg blah-blah" 

需要得到的{0,1名單, 2,4,8,6}

這是很容易使用正則表達式得到一個occurence:

Regex.Match(STRING, @"(?<=/PI/).*(?=/500/)").Value; 

我怎樣才能得到所有occurencies成一個列表?

回答

2

您可以使用LINQ。

List<string> matches = Regex.Matches(STRING, @"(?<=/PI/).*(?=/500/)") 
          .Cast<Match>() 
          .Select(m => m.Value) 
          .ToList(); 
+0

我(從來沒有做過它在─當我使用你的榜樣,我的語法是紅色高亮顯示 – Andrew

+0

這並不編譯。MatchCollection沒有實現IEnumerable的'',只有'IEnumerable'。 – spender

+1

相反, '正則表達式.Matches(bla,bla).Cast ()。選擇...' – spender

1

您可以使用Matches函數。它將返回一個Match對象的集合。

var matches = Regex.Matches(STRING, @"(?<=/PI/).*(?=/500/)") 
foreach(Match match in matches) 
{ 
    Console.WriteLine(match.Value); 
} 
相關問題