正则表达式匹配双引号和单引号外的所有逗号

Regular expression to match all commas outside double and single quotes

我正在尝试使用以下正则表达式匹配双引号 (") 外的逗号

,(?=(?:[^"]*"[^"]*")*[^"]*$)

对于单引号外的逗号 (')

,(?=(?:[^']*'[^']*')*[^']*$)

我的目标是使用单个正则表达式忽略双引号内或单引号内的逗号。

例如

"mahe,ndra", "Gulla" , 40 , 'te,st', 23

能否请您告诉我,我该如何处理。

我会很感激你的帮助

马亨德拉

您可以使用这个正则表达式:

,(?=(?:(?:[^"']*"[^"']*")|(?:[^'"]*'[^'"]*'))*[^"']*$)

它将匹配单引号和双引号外的逗号,如提供的示例,但如果输入有奇数个引号,它将失败。

这里有一些替代解决方法

,(?=\s*(?:"[^"]*"|'[^']*'|\d+)(?:\s*,|\n))

我的方法着重于验证 ,"[^"]*",,'[^']*',,\d+, 这样的模式。这里的技巧是如果匹配的起点是正确的,那么匹配的其余部分直到行尾也是正确的。

DEMO