此问题已在此处有答案:
Replace comma between quotes in CSV with Regex(3个答案)
15天前关闭。
给定以下字符串:
text,text,text,text
text,"text,text",text,text
text,text,text,text
text,"text,text",text,"text,text"
如何只匹配引号之间的逗号?
上下文:我试图从CSV文件中“清理”这些数据,这样我就可以在JS中正确地用.split(",")
分割行。
1条答案
按热度按时间rryofs0p1#
我强烈建议使用像
csv-parser
这样的NPM包,它应该可以处理CSV文件的所有边缘情况。然而,如果这不是一个选项,你可以使用这个正则表达式,它可以解析你的示例输入,但不处理所有用例,比如转义引号:说明:
(?<=^|,)
:前一个字符应该是逗号或行首("([^"]*)"|[^,]*)
:捕获组1应该是:"([^"]*)"
:用双引号括起来,字符串中没有"
([^"]*)
:捕获组2仅捕获""
中的字符串[^,]*
:字符串中没有双引号,也没有,
(?=,|$)
:下一个字符应该是逗号或行尾示例实现:
通过您的输入:
函数的输出是:
其他方案:
如果你想要一个正则表达式来处理更多的边缘情况,我建议看看这个问题:Regex to split a CSV