Trong ví dụ đơn giản, có 2 Biểu thức chính quy, một phân biệt chữ hoa chữ thường, chữ kia thì không. Ý tưởng sẽ là hiệu quả tạo một bộ sưu tập IEnumerable (xem "kết hợp" bên dưới) kết hợp các kết quả.Kết hợp MatchCollections một cách hiệu quả trong .Net Regex
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
}
Trong thực tế, MatchCollections có thể chứa hàng ngàn kết quả và được chạy thường xuyên sử dụng regexes dài tự động tạo ra, vì vậy tôi muốn né tránh sao chép kết quả vào mảng, vv Tôi vẫn đang học LINQ và mờ về cách đi về việc kết hợp những điều này hoặc những gì hiệu suất đạt đến một quá trình chậm chạp sẽ là.
Tôi nghĩ .Concat() có thể tốt hơn .Union() ở đây, trừ khi bạn đang cố tình muốn tránh trùng lặp trong kết quả. – jmnben