我正在为一个项目编写一个小语言解析器,我需要用分号或换行符拆分多行字符串/文件,除非它们在引号内(&#34) ;) - 如果可能的话,在单个正则表达式语句中。
我尝试了以下组合:
split(/^([\r\n]+|[;])(?=(?:[^\"]*\"[^\"]*\")*[^\"])/);
和
split(/(".*?"|[^;]|[^\r\n])(?=\s*;|\s*\r\n)/);
但他们都没有完全成功。
示例:
富;酒吧;有些"的事情;" FUBAR;
应该产生以下数组:
富; 酒吧; 一些" ASD; ASD" FUBAR;
我很感激任何帮助。
谢谢!
答案 0 :(得分:0)
此模式中的第一个捕获组是您想要(并且应该)提取的内容:
(?:"[^"]*"|;|^|\n)([^"\n]+?)(?=;|"|\n)
https://regex101.com/r/v2vz1Z/3
说明
找到每个;或任何“......”或行的开始^
提取不是“
直到找到新的;或“