如何快速处理字符串表达式?

时间:2015-11-05 12:20:05

标签: java regex pattern-matching expression

我有很多这样的表达方式:

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

我想测试输入是否适合表达式。有效的方法吗?

1 个答案:

答案 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解析器。参见:

https://stackoverflow.com/a/16424602/3899583