using System;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
static string regExp = "(((?<x>(?=[,\\r\\n]+))|\"(?<x>([^\"]|\"\")+)\"|(?<x>[^,\\r\\n]+)),?)";
public static void Main()
{
var line = ",\"clean text\",\"with,embedded,commas.\",\"with\"\"embedded\"\"double\"\"quotes\",,\"6.1\",";
var vals= (from Match m in Regex.Matches(line, regExp, RegexOptions.ExplicitCapture)
select m.Groups[1].Value).ToArray();
Console.WriteLine("<start>");
foreach(var s in vals)
Console.WriteLine(s);
Console.WriteLine("<end>");
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJc3RhdGljIHN0cmluZyByZWdFeHAgPSAiKCgoPzx4Pig/PVssXFxyXFxuXSspKXxcIig/PHg+KFteXCJdfFwiXCIpKylcInwoPzx4PlteLFxcclxcbl0rKSksPykiOwoJCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIGxpbmUgPSAiLFwiY2xlYW4gdGV4dFwiLFwid2l0aCxlbWJlZGRlZCxjb21tYXMuXCIsXCJ3aXRoXCJcImVtYmVkZGVkXCJcImRvdWJsZVwiXCJxdW90ZXNcIiwsXCI2LjFcIiwiOwoJCQoJCXZhciB2YWxzPSAoZnJvbSBNYXRjaCBtIGluIFJlZ2V4Lk1hdGNoZXMobGluZSwgcmVnRXhwLCBSZWdleE9wdGlvbnMuRXhwbGljaXRDYXB0dXJlKSAKICAgICAgICAJCSAgIHNlbGVjdCBtLkdyb3Vwc1sxXS5WYWx1ZSkuVG9BcnJheSgpOwoJICAgIAoJICAgIENvbnNvbGUuV3JpdGVMaW5lKCI8c3RhcnQ+Iik7CgkJZm9yZWFjaCh2YXIgcyBpbiB2YWxzKQoJCQlDb25zb2xlLldyaXRlTGluZShzKTsKCSAgICBDb25zb2xlLldyaXRlTGluZSgiPGVuZD4iKTsKCX0KfQ==