В упрощенном примере есть 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 и не совсем понимаю, как чтобы объединить их или то, что скажется на производительности и без того медлительном процессе.