C# 当逗号在引号后面时,正则表达式不起作用

C# 当逗号在引号后面时,正则表达式不起作用,c#,regex,C#,Regex,我有正则表达式 ((?<=\")[^\"]*(?=\"(,|$)+)|(?<=,|^)[^,\"]*(?=,|$)) 这工作正常,因为我将有私人,N,空间,“煤气表” 但是 会给我 Private, ",N,," and then ",Gas,Meter." 正则表达式在介于之间但不在引号后面时工作 有什么想法吗?正则表达式的一般问题是,它在开始时选择性地检查逗号,然后贪婪地继续,直到它首先得到匹配的“或,.我相信它正在检查”,所以它会一直运行,直到遇到“Gas…”。不过,我认为

我有正则表达式

((?<=\")[^\"]*(?=\"(,|$)+)|(?<=,|^)[^,\"]*(?=,|$))
这工作正常,因为我将有私人,N,空间,“煤气表”

但是

会给我

Private, ",N,," and then ",Gas,Meter."
正则表达式在介于之间但不在引号后面时工作


有什么想法吗?

正则表达式的一般问题是,它在开始时选择性地检查逗号,然后贪婪地继续,直到它首先得到匹配的“或,.我相信它正在检查”,所以它会一直运行,直到遇到“Gas…”。不过,我认为切换这两个条件反而会导致引号中的逗号出现问题。在这个答案中,您可能应该用on替换这个正则表达式


似乎您正在尝试解析CSV文件/字符串。你在用什么编程语言?大多数语言的标准库中都有CSV解析器。你想用regex做这件事有什么特别的原因吗?不清楚你是如何希望regex这个破玩意儿起作用的。也许您只需使用
(?:“([^”]*)”|([^”,]*)
就更好了,但我们无法猜测您使用的是哪种正则表达式方言,或者您希望实现什么。另请参阅,以获取有关如何提出正确问题以及如何正确标记问题的指导。是否可以改用CSV解析器?我不知道这是否会更健壮。如果我发现一个不使用visual basic dll,我肯定会使用它。您使用的是什么语言/环境?
"Private",N,,",Gas,Meter."
Private, ",N,," and then ",Gas,Meter."