あなたは私たちに解決するのが非常に難しいものを与えました。文字列内にカンマをネストしても問題ありません。二重引用符に出くわしたら、最後の引用符まですべてを無視できます。これにより、コンマが削除されます。
しかし、パーサーは、次の二重引用符が文字列を終了していないことをどうやって知るのでしょうか。ネストされた二重引用符であることをどのように認識しますか?
入力文字列を少し変更して、ネストされた引用符が何であるかを明確にすることができれば、解析は簡単です...
var txt = "1234,Weapon Types,100,Handgun,\"This is the text, "and", that is all.\",other stuff";
var m = Regex.Match(txt, @"^\d*,Weapon Types,(\d*),(\w+),""([^""]+)""");
MessageBox.Show(m.Groups[3].Value);
しかし、入力文字列にそのようなネストされた引用符が必要な場合は、文字列の実際の末尾を検出するための別のルールを考え出す必要があります。これはどう?
var txt = "1234,Weapon Types,100,Handgun,\"This is the text, \"and\", that is all.\",other stuff";
var m = Regex.Match(txt, @"^\d*,Weapon Types,(\d*),(\w+),""(.+)"",");
MessageBox.Show(m.Groups[3].Value);
結果は…
これが「そして」というテキスト、それだけです。