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

时间:2016-09-20 12:46:15

标签: regex abap

我正在尝试使用以下正则表达式

匹配双引号(")之外的逗号
,(?=(?:[^"]*"[^"]*")*[^"]*$)

表示单引号外的逗号(')

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

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

e.g。

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

请你告诉我,我该怎么处理呢。

我将非常感谢你的帮助

马亨德拉

2 个答案:

答案 0 :(得分:2)

这里有一些替代解决方法

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

我的方法强调验证,"[^"]*",,'[^']*',,\d+,这样的模式。这里的诀窍是,如果匹配的起始点是正确的,那么匹配的其余部分直到行的结尾也是正确的。

请参阅bannedadsense.com/index.php

答案 1 :(得分:1)

您可以使用此正则表达式:

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

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