用于从逻辑表达式中提取操作数和运算符以及括号的正则表达式

Regular expression to extract operands and operators along with parenthesis from a logical expression

ABC or DEF and ( GHI or JKL)

这里的操作数ABC可以是一个可以包含空格的短语。唯一的运算符是 andor。谁能建议一种获取所有操作数的方法?

我想这样做: 将有一个运算符列表,我将使用它作为参考来查找任何此 \bOPERATOR\b 的第一个索引,然后找到下一个可用 \bOPERATOR\b 的第一个索引并在这两个运算符之间提取一个词(通过根据找到的运算符的长度操纵索引)

我觉得这是蛮力的做法。谁能提出更好的解决方案?我更愿意使用 jQuery.

来完成
var expression = "ABC or DEF and ( GHI or JKL)";
var tokens = expression.split(/ and | or |\(|\)/);
tokens = tokens.filter(function(token) { return token.trim().length > 0; });

解释:

正则表达式将表达式拆分为: 1) "and" 或 "or" 被空格包围(以将这些运算符与单词的一部分区分开来,如 "stand" 或 "fork")。 2) 打开和关闭括号。

filter 的调用删除了多余的空字符串和仅包含空格的字符串,如果多个分隔符连续出现(例如 "and" 后跟一个带括号的子表达式,则可能会产生空格) .

var separators = ["\bAND\b" , "\b(\b", "\bOR\b", "\b)\b"];
var operands = expression.split(new RegExp(separators.join('|')));