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