正则表达式匹配双引号和单引号外的所有逗号
Regular expression to match all commas outside double and single quotes
我正在尝试使用以下正则表达式匹配双引号 (") 外的逗号
,(?=(?:[^"]*"[^"]*")*[^"]*$)
对于单引号外的逗号 (')
,(?=(?:[^']*'[^']*')*[^']*$)
我的目标是使用单个正则表达式忽略双引号内或单引号内的逗号。
例如
"mahe,ndra", "Gulla" , 40 , 'te,st', 23
能否请您告诉我,我该如何处理。
我会很感激你的帮助
马亨德拉
您可以使用这个正则表达式:
,(?=(?:(?:[^"']*"[^"']*")|(?:[^'"]*'[^'"]*'))*[^"']*$)
它将匹配单引号和双引号外的逗号,如提供的示例,但如果输入有奇数个引号,它将失败。
这里有一些替代解决方法
,(?=\s*(?:"[^"]*"|'[^']*'|\d+)(?:\s*,|\n))
我的方法着重于验证 ,"[^"]*",
、,'[^']*',
或 ,\d+,
这样的模式。这里的技巧是如果匹配的起点是正确的,那么匹配的其余部分直到行尾也是正确的。
见DEMO
我正在尝试使用以下正则表达式匹配双引号 (") 外的逗号
,(?=(?:[^"]*"[^"]*")*[^"]*$)
对于单引号外的逗号 (')
,(?=(?:[^']*'[^']*')*[^']*$)
我的目标是使用单个正则表达式忽略双引号内或单引号内的逗号。
例如
"mahe,ndra", "Gulla" , 40 , 'te,st', 23
能否请您告诉我,我该如何处理。
我会很感激你的帮助
马亨德拉
您可以使用这个正则表达式:
,(?=(?:(?:[^"']*"[^"']*")|(?:[^'"]*'[^'"]*'))*[^"']*$)
它将匹配单引号和双引号外的逗号,如提供的示例,但如果输入有奇数个引号,它将失败。
这里有一些替代解决方法
,(?=\s*(?:"[^"]*"|'[^']*'|\d+)(?:\s*,|\n))
我的方法着重于验证 ,"[^"]*",
、,'[^']*',
或 ,\d+,
这样的模式。这里的技巧是如果匹配的起点是正确的,那么匹配的其余部分直到行尾也是正确的。
见DEMO