你给了我们一些非常难以解决的问题。可以在字符串中嵌套逗号。一旦遇到双引号,我们可以忽略所有内容,直到结束引号。这将使用逗号。
但是你的解析器怎么知道下一个双引号不是结束字符串。它怎么知道它是一个嵌套的双引号?
如果我可以稍微修改您的输入字符串以明确什么是嵌套引号,那么解析很容易......
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);
结果是……
这是文本,“和”,仅此而已。