有没有办法用javascript拆分CSV字符串,其中分隔符也可以作为转义值出现。其他正则表达式实现通过lookbehind解决了这个问题,但由于javascript不支持lookbehind,我想知道如何使用正则表达式以一种整齐的方式实现这一点。
csv行可能看起来像这样
"This is\, a value",Hello,4,'This is also\, possible',true
必须将其拆分为(包含的字符串)
[0] => "This is\, a value"
[1] => Hello
[2] => 4
[3] => 'This is also\, possible'
[4] => true
答案 0 :(得分:1)
不要尝试拆分,而是可以尝试全局匹配所有不具有此模式的,
:
/"[^"]+"|'[^']+'|[^,]+/g
答案 1 :(得分:0)
例如,您可以使用此正则表达式:
(.*?[^\\])(,|$)
正则表达式需要一切。*?直到第一个逗号,它前面没有\或行尾
答案 2 :(得分:0)
这是一些将csv更改为json的代码(假设第一行支持名称)。您可以参加第一部分(array2d),并轻松完成其他操作。
aggregate(df[, 2:4], by = list(condition = df$x <= 2), FUN = sum)
答案 3 :(得分:0)
不幸的是,这不适用于Firefox,仅适用于Chrome和Edge:
"abc\\,cde,efg".split(/(?<!\\),/)
将产生["abc\,cde", "efg"]
。
您需要在第二步中删除所有(未转义的)转义符。