在序列出现之前用正则表达式拆分

Split with Regex before sequence appears

我有一个包含以下内容的文本文件:

测试,[636,13,"be738jsk","some, text",js]

我想将此内容读入数组。我目前使用 JavaScript 和正则表达式将子字符串直接拆分成数组。 作为正则表达式,我有: line.split(/,\s\[|",|,"|","/);

问题是,我有一些句子,例如示例中带有“,”的句子,我不想在那里拆分。所以我试图在正则表达式中说,“拆分之后,除空格外的所有内容”。问题是,它还删除了 ,

之后的“所有内容”

示例:

测试,[63737,33,"bla,blablba",737]

当我使用这个正则表达式时:

Line.split(/,"|,\s\[|",|,[^\s]/); 然后它从 33 中切出 3 :(

您可以使用

const text = 'Test, [636,13,"be738jsk","some, text",js], "[Blablba] Blablba"';
console.log(
  Array.from(text.matchAll(/\w+|"([^"]*)"/g), x => x[1] ?? x[0])
)

输出:

[
  "Test",
  "636",
  "13",
  "be738jsk",
  "some, text",
  "js",
  "[Blablba] Blablba"
]

此处,\w+|"([^"]*)" 匹配一个或多个单词字符或双引号之间除双引号(捕获到第 1 组)之外的任何零个或多个字符。如果已定义,x => x[1] ?? x[0] 部分采用第 1 组值,否则,它保留整个匹配值。