以下の例では、名前付きグループとキャプチャを使ってCSVの各レコードからフィールドの値を抽出し、表形式に整形しています。 この例で使用する正規表現は複雑になるため、構成要素毎に分けた正規表現を組み立てています。 それぞれの正規表現は次のようになっています。

recordPattern = ((^|,)fieldPattern)*$
レコード(1行分)のパターン
行頭^またはカンマ,の後にfieldPatternが続く組み合わせが0個以上続き(*)、最後に行末$が出現する文字列で構成される
fieldPattern = (quotedFieldPattern|plainFieldPattern)
レコード内の各フィールドのパターン
クオートされたフィールドquotedFieldPattern、もしくはクオートされていないフィールドplainFieldPatternで構成される
quotedFieldPattern = "(?<value>(""|[^"])*?)"
クオートされているフィールドのパターン
開きの二重引用符"、クオートされた値((?<value>...)の部分)、閉じの二重引用符"で構成される
クオートされた値は、エスケープされた二重引用符""または閉じの二重引用符以外の文字[^"]が0個以上続く(*?)文字列で構成される
(ここでは(""|[^"])が閉じの二重引用符にマッチしないよう、*ではなく最短一致の*?を使用する)
plainFieldPattern = (?<value>[^,]*)
クオートされていないフィールドのパターン
カンマ以外の文字([^,])が0個以上続く(*)文字列で構成される

なお、最終的に組み立てられた正規表現は実行結果として出力しています。 また、この例で使用している正規表現では、名前付きグループvalueに複数のフィールドがキャプチャされるため、Group.Capturesプロパティを参照してキャプチャしたフィールドの値を列挙しています。

正規表現を使ってクオートを含むCSVの各レコードからフィールドの値を抽出する
Imports System
Imports System.Text.RegularExpressions

Class Sample
  Shared Sub Main()
    Dim plainFieldPattern As String   = "(?<value>[^,]*)"
    Dim quotedFieldPattern As String  = """(?<value>(""""|[^""])*?)"""
    Dim fieldPattern As String        = $"({quotedFieldPattern}|{plainFieldPattern})"
    Dim recordPattern As String       = $"((^|,){fieldPattern})*$"

    Console.WriteLine(recordPattern)
    Console.WriteLine()

    Dim records() As String = New String() { _
      "type,example,max value", _
      "", _
      "int,""0, 16, 42"",int.MaxValue", _
      "double,3.14,double.MaxValue", _
      "bool,""true, false"",", _
      "string,""""""foo"""", """"bar""""""," _
    }

    For Each record As String In records
      Console.WriteLine("<{0}>", record)
    Next

    Console.WriteLine()

    For Each record As String In records
      Dim m As Match = Regex.Match(record, recordPattern)

      If m.Success Then
        For Each c As Capture In m.Groups("value").Captures
          Console.Write("|{0,-20}", c.Value.Replace("""""", """"))
        Next
      End If

      Console.WriteLine()
    Next
  End Sub
End Class
実行結果
((^|,)("(?<value>(""|[^"])*?)"|(?<value>[^,]*)))*$

<type,example,max value>
<>
<int,"0, 16, 42",int.MaxValue>
<double,3.14,double.MaxValue>
<bool,"true, false",>
<string,"""foo"", ""bar""",>

|type                |example             |max value           
|                    
|int                 |0, 16, 42           |int.MaxValue        
|double              |3.14                |double.MaxValue     
|bool                |true, false         |                    
|string              |"foo", "bar"        |