2014-11-04 2 views
0

Есть ли способ извлечь уникальные захваченные группы, соответствующие шаблону регулярных выражений в C# .net? Мне нужно к иметь список uniqueSiteElementKeys3 с 2-х элементов, SiteElements [10] и SiteElements [11]Regex: как извлечь уникальные группы, соответствующие шаблону

string lineOfKeys = "SiteElements[10].TempateElementId,SiteElements[10].TemplateElementValue,SiteElements[11].TempateElementId,SiteElements[11].TemplateElementValue"; 
string pattern3 = @"(?<SiteElements>^\b(SiteElements\[[0-9]+\]))";       
List<string> uniqueSiteElementKeys3 = new List<string>(); 
foreach (Match match in Regex.Matches(lineOfKeys, pattern3)) 
{ 
    if (uniqueSiteElementKeys3.Contains(match.Groups[1].Value) == false) 
    { 
    uniqueSiteElementKeys3.Add(match.Groups[1].Value); 
    } 
} 

ответ

0

Просто используйте простой старый LINQ для этого:

var uniqueSiteElementKeys3 = Regex.Matches(lineOfKeys, @"\bSiteElements\[[0-9]+\]") 
            .Cast<Match>() 
            .Select(match => match.Value) 
            .Distinct() 
            .ToList(); 

Demo

+0

Спасибо за быстрый ответ, Лукас. Попробуй и расскажешь. – Ntn

+0

Да, я был неправ. По-прежнему использовался старый шаблон. Ваше решение сработало. Благодарю вас, Лукас, я пару часов выбиваю себе мозги. – Ntn