Javascript:使用WiseSpace拆分字符串,除非它用圆括号、单引号或方括号括起来

Javascript:使用WiseSpace拆分字符串,除非它用圆括号、单引号或方括号括起来,javascript,regex,Javascript,Regex,我的做法: 不幸的是,这在封装的括号中有问题,例如:a、b、c、d和I无法实现撇号搜索 示例:a b a b[a b c d]“测试字符串”a b 期望结果:[a、b、a、b、[a、b、c、d],“测试字符串”,a、b] 如果它也能处理这样的事情,那将是最好的 例如:a b abcda b 预期结果:[a、b、abcda b] 正则表达式是这里最好的方法吗?要想知道正则表达式是否可以解决某些问题,我可以为这个问题画一个有限自动机状态机吗。记住,自动机没有任何存储功能 现在让我们看一下示例中具有

我的做法:

不幸的是,这在封装的括号中有问题,例如:a、b、c、d和I无法实现撇号搜索

示例:a b a b[a b c d]“测试字符串”a b 期望结果:[a、b、a、b、[a、b、c、d],“测试字符串”,a、b]

如果它也能处理这样的事情,那将是最好的

例如:a b abcda b 预期结果:[a、b、abcda b]


正则表达式是这里最好的方法吗?

要想知道正则表达式是否可以解决某些问题,我可以为这个问题画一个有限自动机状态机吗。记住,自动机没有任何存储功能

现在让我们看一下示例中具有嵌套结构的子字符串: a a b

如何为这个场景编写通用的有限自动机?一般来说,我的意思是,自动机将如何记住有多少次,一个开始括号出现了相同数量的匹配结束括号以下的特定模式

这就是为什么不能仅使用正则表达式来解析这个字符串模式


特别是对于这个问题,因为它非常简单,我只需要迭代字符串,保留一个堆栈来跟踪括号并引用字符来自己解析它。

Regex不适合嵌套结构。
[\s]+(?!([^[]*])|([^\(]*\)))