2014-11-04 39 views
0

有沒有辦法提取匹配c#.net中的正則表達式模式的唯一捕獲的組?我需要一個有列表uniqueSiteElementKeys3有2個元素,SiteElements [10]和SiteElements [11]正則表達式:如何提取匹配模式的唯一組

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 2014-11-04 22:26:49

+0

是的,我錯了。仍然使用舊模式。您的解決方案奏效我打了幾個小時才找到解決方案,謝謝盧卡斯。 – Ntn 2014-11-04 22:41:36