В упрощенном примере есть 2 регулярных выражения, один регистр чувствителен, другой нет. Идея состоит в том, чтобы эффективно создать коллекцию IEnumerable (см. Ниже "комбинированное" ), объединяющее результаты.
string test = "abcABC";
string regex = "(?<grpa>a)|(?<grpb>b)|(?<grpc>c)]";
Regex regNoCase = new Regex(regex, RegexOptions.IgnoreCase);
Regex regCase = new Regex(regex);
MatchCollection matchNoCase = regNoCase.Matches(test);
MatchCollection matchCase = regCase.Matches(test);
//Combine matchNoCase and matchCase into an IEnumerable
IEnumerable<Match> combined= null;
foreach (Match match in combined)
{
//Use the Index and (successful) Groups properties
//of the match in another operation
}
На практике MatchCollections может содержать тысячи результатов и часто запускаться с использованием длинных динамически создаваемых REGEX, поэтому я хотел бы уклониться от копирования результатов в массивы и т.д. Я все еще изучаю LINQ и не знаю, как чтобы объединить эти или то, что производительность попадает на уже вялый процесс.