Dim pattern As String = "(?:,|\n|^)(""(?:(?:"""")*[^""]*)*""|[^"",\n]*|(?:\n|$))"
' una riga di esempio
Dim dati As String = "15601,01/18/2012,02:58:26,""RICETTA A"" ,120, 50, 70, 60, 120 , 20,"
' divido la riga in campi e la ricostruisco, cioè trasformo da CSV in TSV
Dim match As Matcher = Regex.Matcher(pattern, dati)
Dim risultato As String = ""
Do While match.Find
Dim campo As String = match.Group(1)
If campo.StartsWith("""") Then campo = campo.SubString(1) ' trim prime virgolette
If campo.EndsWith("""") Then campo = campo.SubString2(0, campo.Length-1) ' trim ultime virgolette
campo = campo.Replace("""""", """").Trim
risultato = risultato & TAB & campo
Loop
risultato = risultato.SubString(1) ' tolgo il primo TAB
' adesso divido e trasformo in array
Dim Values() As String = Regex.Split(TAB, risultato)