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 } 的列表

使用正则表达式很容易出现一次:

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

我怎样才能把所有的事件都放在一个列表中?

4

2 回答 2

2

您可以使用 LINQ。

List<string> matches = Regex.Matches(STRING, @"(?<=/PI/).*(?=/500/)")
                            .Cast<Match>()
                            .Select(m => m.Value)
                            .ToList();
于 2012-05-07T22:46:14.467 回答
1

您可以使用该Matches功能。它将返回一个Match对象集合。

var matches = Regex.Matches(STRING, @"(?<=/PI/).*(?=/500/)")
foreach(Match match in matches)
{
  Console.WriteLine(match.Value);
}
于 2012-05-07T22:44:21.183 回答