RegexOptions.ExplicitCaptureを指定した場合、明示的に名前を与えたグループのみキャプチャされるようになり、それ以外のグループ化構成要素はグループ化から除外されます。 正規表現要素(?:)が明示的にキャプチャの除外対象を指定するものであるのに対し、RegexOptions.ExplicitCaptureは名前付きグループと組み合わせて明示的にキャプチャの対象を指定するものです。

次の例では、RegexOptionsがNoneの場合(指定しない場合のデフォルト)と、RegexOptions.ExplicitCaptureの場合でキャプチャされる結果の違いを示しています。 RegexOptions.Noneではグループ名を与えていないグループもキャプチャされるのに対し、RegexOptions.ExplicitCaptureではグループ名を与えているグループのみがキャプチャされています。

RegexOptions.ExplicitCaptureを指定して明示的にグループ名を指定したグループのみをキャプチャする
using System;
using System.Text.RegularExpressions;

class Sample {
  static void Main()
  {
    var text = "2016/02/29 00:00:00";

    // yyyy/mm/dd形式の日付 (yyyy部分のみ名前付きグループでグループ化)
    var pattern = @"(?<y>\d{4})/(\d{2})/(\d{2})";

    // RegexOptions.Noneの場合にキャプチャされるグループを列挙して表示
    Console.WriteLine("[RegexOptions.None]");

    foreach (Group g in Regex.Match(text, pattern, RegexOptions.None).Groups) {
      Console.WriteLine(g.Value);
    }

    // RegexOptions.ExplicitCaptureの場合にキャプチャされるグループを列挙して表示
    Console.WriteLine("[RegexOptions.ExplicitCapture]");

    foreach (Group g in Regex.Match(text, pattern, RegexOptions.ExplicitCapture).Groups) {
      Console.WriteLine(g.Value);
    }
  }
}
実行結果
[RegexOptions.None]
2016/02/29
02
29
2016
[RegexOptions.ExplicitCapture]
2016/02/29
2016

上記の結果にもあるように、RegexOptions.ExplicitCaptureによって明示的なグループ化を行った場合でも、match.Groupsプロパティにはインデックスが0のグループ、つまりマッチした箇所全体を表すグループが常に含まれます。

Regex.Splitメソッドでグループ化した正規表現を区切りとして分割する場合、RegexOptions.ExplicitCaptureを指定するかどうかで結果が変わります。 具体的な結果の違いについては§.グループ化された正規表現による分割 (Regex.Split)を参照してください。