获取大字符串中分隔符之间的所有值

时间:2012-05-07 22:37:34

标签: c# regex string

我有一个包含大量文本的字符串。我需要找到位于其间的所有值 '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;

如何将所有出现的问题都列入一个清单?

2 个答案:

答案 0 :(得分:2)

您可以使用LINQ。

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

答案 1 :(得分:1)

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

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