我不太确定这是否可能,所以我求助于你。我想找一个正则表达式,将挑选所有逗号以外的引号集。例如:'foo' => 'bar','foofoo' => 'bar,bar'这将在第1行之后选择单个逗号。'bar',我不关心单引号还是双引号。有人有什么想法吗?我觉得这是有可能的,但我的判断力太弱了。在引号之外选择逗号的Regex
3 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
,(?=(?:[^"]*"[^"]*")*[^"]*$)
或
"[^"]*"(*SKIP)(*F)|,
"[^"]*"
buz,"bar,foo"
"bar,foo"
(*SKIP)(*F)
|
,
|
buz
,(?!(?:[^"]*"[^"]*")*[^"]*$)
紫衣仙女
TA贡献1839条经验 获得超15个赞
function splitNotStrings(str){ var parse=[], inString=false, escape=0, end=0 for(var i=0, c; c=str[i]; i++){ // looping over the characters in str if(c==='\\'){ escape^=1; continue} // 1 when odd number of consecutive \ if(c===','){ if(!inString){ parse.push(str.slice(end, i)) end=i+1 } } else if(splitNotStrings.quotes.indexOf(c)>-1 && !escape){ if(c===inString) inString=false else if(!inString) inString=c } escape=0 } // now we finished parsing, strings should be closed if(inString) throw SyntaxError('expected matching '+inString) if(end<i) parse.push(str.slice(end, i)) return parse}splitNotStrings.quotes="'\"" // add other (symmetrical) quotes here
- 3 回答
- 0 关注
- 627 浏览
添加回答
举报
0/150
提交
取消