Javascript、正则表达式按换行符或分号拆分多行字符串,除非在引号中

Javascript、正则表达式按换行符或分号拆分多行字符串,除非在引号中,javascript,regex,Javascript,Regex,我正在为一个项目编写一个小型语言解析器,我需要用分号或换行符拆分一个多行字符串/文件,除非它们在引号(“)-如果可能的话,在单个正则表达式语句中 我尝试了以下组合: split(/^([\r\n]+|[;])(?=(?:[^\"]*\"[^\"]*\")*[^\"])/); 及 但没有一个能很好地解决问题 例如: 傅;酒吧;一些“东西;" 福巴尔 应生成以下数组: 傅; 酒吧; 一些“自闭症”;asd“ 福巴尔 我非常感谢你的帮助 谢谢!此模式中的第一个捕获组是您想要(并且应该)提取的: 说

我正在为一个项目编写一个小型语言解析器,我需要用分号或换行符拆分一个多行字符串/文件,除非它们在引号(“)-如果可能的话,在单个正则表达式语句中

我尝试了以下组合:

split(/^([\r\n]+|[;])(?=(?:[^\"]*\"[^\"]*\")*[^\"])/);

但没有一个能很好地解决问题

例如:

傅;酒吧;一些“东西;" 福巴尔

应生成以下数组:

傅; 酒吧; 一些“自闭症”;asd“ 福巴尔

我非常感谢你的帮助


谢谢!

此模式中的第一个捕获组是您想要(并且应该)提取的:

说明:

  • 查找每一行;或任何“…”或行的开头^

  • 提取不属于“”的字符[^“]

  • 直到发现新的;或“


不要选择“thing”,而是选择另一个自定义文本?结果数组中的
“asd;asd”
是什么?是否有问题@奈弗辛
split(/(".*?"|[^;]|[^\r\n])(?=\s*;|\s*\r\n)/);
(?:"[^"]*"|;|^|\n)([^"\n]+?)(?=;|"|\n)