【发布时间】:2021-11-08 17:20:05
【问题描述】:
我有一个包含以下内容的文本文件:
测试,[636,13,"be738jsk","some, text",js]
我想将此内容读入一个数组。我目前使用带有正则表达式的 JavaScript 将子字符串直接拆分为数组。
作为正则表达式,我有:
line.split(/,\s\[|",|,"|","/);
问题是,我有一些句子,例如示例中带有“,”的句子,我不想在那里拆分。所以我试图在正则表达式中说,“之后拆分,除空格之外的所有内容”。问题是,它还删除了 , 之后的“所有内容”,
例子:
测试,[63737,33,"bla,blablba",737]
当我使用这个正则表达式时:
Line.split(/,"|,\s\[|",|,[^\s]/);
然后它从 33 中删除了 3 :(
【问题讨论】:
-
试试
string.match(/\w+|"[^"]*"/g)或Array.from('Test, [636,13,"be738jsk","some, text",js]'.matchAll(/\w+|"([^"]*)"/g), x => x[1] ?? x[0]) -
您的第二个解决方案完美运行。谢谢。但现在我发现,还有一些像“[Blablba] Blablba”这样的字符串。可悲的是,您的解决方案也会分裂:/所以有一个解决方案
-
Array.from("[Blablba] Blablba".matchAll(/\w+|"([^"]*)"/g), x => x[1] ?? x[0])显示['Blablba', 'Blablba'],难道不是预期的吗? -
否,因为 [Blabla] Blabla 位于两个引号之间,应该放在一起。
-
那我的解决方案还是可以的,请看下面的代码演示答案。
标签: javascript java regex readfile to-json