我有很多这样的表达方式:
A
(age=1 AND gender=1) OR (kw>=5rWL6K+V6K+NCua1i+ivleWFs+mUruivjQo= AND
interest=23100000) OR NOT interest=120101
是由base64编码的字符串。它们是被' \ n'分开的词。 > =表示模糊匹配。
我在hashMap中有很多输入,如下所示:
5rWL6K+V6K+NCua1i+ivleWFs+mUruivjQo
我想测试输入是否适合表达式。有效的方法吗?
答案 0 :(得分:0)
您可以将每个“AND
”替换为“&&
”,每个“OR
”替换为“||
”,每个“=
”替换为“==
” NOT
“和每个”!
“与”String.replace()
“。然后,您将使用输入哈希映射(preview method
)
最后,您可以使用内置的JavaScript引擎来获取表达式的结果,如下所述:
https://stackoverflow.com/a/19384210/3899583
看看ScriptEngine javadoc:
http://docs.oracle.com/javase/6/docs/api/javax/script/ScriptEngine.html
它看起来很多工作(以及大量的调试),但我认为这是你可以遵循的最有效的方式,只要你不想从头开始实现整个事情。
编辑:
您的表达式似乎与SQL很接近,因此您应该考虑使用ZQL,它是一个用Java编写的SQL解析器。参见: