我想解析布尔表达式中的变量名称
例如来自此字符串
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混淆,如何只忽略完整的单词?
我知道正则表达式不能使用任意数量的括号,有没有任何规范的方法可以做到这一点?
答案 0 :(得分:1)
您还需要在否定前瞻中添加单词边界:
(?!(?:AND|OR|XOR|NOT)\b)
此外,请注意[\w]\w*
可以简化为\w+
。
总而言之,以下内容可能适合您的需求:
(?!(?:AND|OR|XOR|NOT)\b)\b(\w+)