Java 如何快速处理字符串表达式?;
我有很多这样的表达:Java 如何快速处理字符串表达式?;,java,regex,pattern-matching,expression,Java,Regex,Pattern Matching,Expression,我有很多这样的表达: (age=1 AND gender=1) OR (kw>=5rWL6K+V6K+NCua1i+ivleWFs+mUruivjQo= AND interest=23100000) OR NOT interest=120101 {<age,10>,<gender,1>,<kw,"123">,<interest,1>} 5rWL6K+V6K+NCua1i+ivleWFs+mUruivjQo是由base64编码的字符串。它
(age=1 AND gender=1) OR (kw>=5rWL6K+V6K+NCua1i+ivleWFs+mUruivjQo= AND
interest=23100000) OR NOT interest=120101
{<age,10>,<gender,1>,<kw,"123">,<interest,1>}
5rWL6K+V6K+NCua1i+ivleWFs+mUruivjQo
是由base64编码的字符串。它们是由“\n”分隔的单词表示模糊匹配
我在hashMap中有许多输入,如下所示:
(age=1 AND gender=1) OR (kw>=5rWL6K+V6K+NCua1i+ivleWFs+mUruivjQo= AND
interest=23100000) OR NOT interest=120101
{<age,10>,<gender,1>,<kw,"123">,<interest,1>}
{,,}
我想测试输入是否适合表达式。有没有有效的方法?你可以用“&
”替换每个“和
”,用“|
”替换每个“=
”,用“=
”替换每个“或
”,用“!
”替换每个“”。然后用输入哈希映射中的值替换表达式中的变量(String.replace()
)
最后,您可以使用内置JavaScript引擎获得表达式的结果,如下所述:
请看一下ScriptEngine javadoc:
这看起来需要大量的工作(以及大量的调试),但我认为这是您可以遵循的最有效的方法,前提是您不想从头开始实现整个过程
编辑:
<>你的表达式看起来很接近SQL,所以你应该考虑使用ZQL,它是用java编写的SQL解析器。见:
您可以将每个“和
”替换为“&
”,将每个“或
”替换为“|
”,将每个“=
”替换为“=
”,将每个“非
”替换为“!
”。然后用输入哈希映射中的值替换表达式中的变量(String.replace()
)
最后,您可以使用内置JavaScript引擎获得表达式的结果,如下所述:
请看一下ScriptEngine javadoc:
这看起来需要大量的工作(以及大量的调试),但我认为这是您可以遵循的最有效的方法,前提是您不想从头开始实现整个过程
编辑:
<>你的表达式看起来很接近SQL,所以你应该考虑使用ZQL,它是用java编写的SQL解析器。见:
由于您的问题目前已写好,因此不清楚您在问什么。您需要解析表达式吗?或者您已经这样做了,是否要将它们与hashmap的内容相匹配?您期望的输出是什么?是什么阻止了你解决这个问题?你应该首先解析你的条件并创建一些更方便的对象…是的,有一些有效的方法。计算机语言一直在做这些事情。你试过什么?因为你的问题目前已经写好了,所以不清楚你在问什么。您需要解析表达式吗?或者您已经这样做了,是否要将它们与hashmap的内容相匹配?您期望的输出是什么?是什么阻止了你解决这个问题?你应该首先解析你的条件并创建一些更方便的对象…是的,有一些有效的方法。计算机语言一直在做这些事情。你试过什么?