Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何快速处理字符串表达式?;_Java_Regex_Pattern Matching_Expression - Fatal编程技术网

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的内容相匹配?您期望的输出是什么?是什么阻止了你解决这个问题?你应该首先解析你的条件并创建一些更方便的对象…是的,有一些有效的方法。计算机语言一直在做这些事情。你试过什么?