正则表达式:如何提取与模式匹配的唯一组

时间:2014-11-04 22:04:52

标签: .net regex capturing-group

有没有办法提取匹配c#.net中正则表达式模式的唯一捕获组?我需要一个包含2个元素的列表uniqueSiteElementKeys3,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);
  }
}

1 个答案:

答案 0 :(得分:0)

只需使用普通的旧LINQ:

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

Demo