我有一个CSV行,看起来像:
foo, bar, baz, "england, scotland, wales, ireland", sith
并需要将其转换为
"foo", "bar", "baz", "england, scotland, wales, ireland", "sith"
我已经决定用逗号替换双引号之间的所有逗号,但是在双引号之间取一个替代后我有正则表达式的问题,因为在使用时
replace(/(.+)(,)(.+)/g, "'comma'")
我接下一个子串
"england, scotland, wales'comma' ireland"
而不是
"england'comma' scotland'comma' wales'comma' ireland"
我不想使用像
这样的更复杂结构的正则表达式/(.+)(,)(.+)(,)(.+)(,)(.+)/g
并希望用逗号分组,但不能为它选择正确的正则表达式,所以我使用带有for循环匹配的递归子字符串搜索。我做对了,还是有一个适合的正则表达式,但我还没有找到它。谢谢。
答案 0 :(得分:2)
您可以使用此模式:
var re = /"([^"]*)"|([^\s,][^,]*)/g;
var str = 'foo, bar, baz, "england, scotland, wales, ireland", sith';
var subst = '"$1$2"';
var result = str.replace(re, subst);
console.log(result);