用于检测布尔表达式中的变量的正则表达式

时间:2014-06-02 15:01:01

标签: regex regex-negation

我想解析布尔表达式中的变量名称

例如来自此字符串

DOG AND ANDRES OR BAR OR BAND AND COOL XOR DOG

我想获得变量

DOG,ANDRES,BAR,BAND,COOL,DOG

(如果重复DOG则无关紧要)

我是建立正则表达式的新手,所以我最终得到了这个怪物

/(?!AND|OR|XOR|NOT)\b([\w]\w*)\b(?!\s*\()/g

问题是这个正则表达式将ANDRES与AND混淆,如何只忽略完整的单词?

我知道正则表达式不能使用任意数量的括号,有没有任何规范的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

您还需要在否定前瞻中添加单词边界:

(?!(?:AND|OR|XOR|NOT)\b)

此外,请注意[\w]\w*可以简化为\w+

总而言之,以下内容可能适合您的需求:

(?!(?:AND|OR|XOR|NOT)\b)\b(\w+)

Regular expression visualization

Debuggex Demo