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

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

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

Class Sample
  Shared Sub Main()
    Dim text As String = "2016/02/29 00:00:00"

    Console.WriteLine(text)

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

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

    For Each g As Group In Regex.Match(text, pattern, RegexOptions.None).Groups
      Console.WriteLine(g.Value)
    Next

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

    For Each g As Group In Regex.Match(text, pattern, RegexOptions.ExplicitCapture).Groups
      Console.WriteLine(g.Value)
    Next
  End Sub
End Class
実行結果
[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)を参照してください。