我有一个 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 循环中进行匹配。我做得对吗,或者有一个合适的正则表达式,但我还没有找到。谢谢。
最佳答案
您可以使用此模式:
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);
关于javascript - 使用哪个 - 递归查询或特定正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26287228/