Javascript,Regex-split多行字符串by linebreak OR分号,除非在引号中

时间:2017-03-17 19:57:49

标签: javascript regex

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

我尝试了以下组合:

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

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

但他们都没有完全成功。

示例:

富;酒吧;有些"的事情;" FUBAR;

应该产生以下数组:

富; 酒吧; 一些" ASD; ASD" FUBAR;

我很感激任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

https://regex101.com/r/v2vz1Z/3

说明

  • 找到每个;或任何“......”或行的开始^

  • 提取不是“

  • 的字符[^”]
  • 直到找到新的;或“