Как использовать RegEx в C #, чтобы взять все соответствующие строки в коллекцию - PullRequest
0 голосов
/ 17 июня 2011

Я хочу взять все совпадения в коллекцию или хотя бы новую строку с моими значениями, разделенными пробелами.

var srcString = @"foo foo %%match1%%, foo %%match2%%, %%match3%% foo foo";

var output = Regex.Match(srcString, @"\%\%(.*)\%\%").Groups[1].Value;

где output, должен быть коллекцией с "match1" в качестве элемента, "match2" в качестве следующего и т. Д. Или хотя бы чем-то вроде "match1 match2 match3".

Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 июня 2011

Попробуйте:

  var srcString = @"foo foo %%match1%%, foo %%match2%%, %%match3%% foo foo";
            var match = Regex.Match(srcString, @"%%([^%]+)%%");
            while (match.Success)
            {
                Console.WriteLine(match.Groups[1].Value);
                match = match.NextMatch();
            }

Вывод:

match1
match2
match3
0 голосов
/ 17 июня 2011

Это должно сработать

var srcString = @"foo foo %%match1%%, foo %%match2%%, %%match3%% foo foo";

IEnumberable<string> results = Regex.Matches(srcString, @"\%\%(.*?)\%\%").Cast<Match>().Select(match => match.Value);
...