验证字符串以仅包含逻辑运算符和某些条件

时间:2011-07-05 05:06:32

标签: java string

我正在尝试验证一个包含某些条件和逻辑运算符的字符串。 例如, 我的输入表达式可能是这样的:

(var1==var2 AND var2==var4) OR (someothervar!=5) AND (somemorevar=<4 OR var5<10)

稍后,我会将此字符串转换为java可读表达式

(var1==var2 && var2==var4) || (someothervar!=5) && (somemorevar=<4 || var5<10)

输入字符串在运行时捕获,它可以是任何内容。我关心的是验证输入字符串是一个有效的表达式,所以稍后只有AND和OR可以替换为&amp;&amp;和||评估。

4 个答案:

答案 0 :(得分:0)

看起来你想要构建一个语法树。请查看JavaCC ant ANTLR

答案 1 :(得分:0)

为什么你允许“AND”和“OR”,如果你需要已经验证了输入,你仍然要替换“AND”和“OR”这两个词?只需要||和&amp;&amp;作为输入验证的一部分,跳过允许“AND”和“OR”的步骤。

验证的想法是在输入字符串上执行正则表达式。我对Regex不太了解,但我的猜测是会有人在那里可以得到一个正则表达式,以确保开括号与结尾相匹配,并且至少有两个“=”符号等等。想法。

答案 2 :(得分:0)

听起来您正在构建规则引擎/解析器并以更易于阅读的格式传递规则?

如果是这种情况,您应该查看现有的规则引擎,例如Drools。规则语法是一种易于阅读的格式,如果你的规则变得更复杂,规则引擎就会非常强大,你可以用它做更多的事情。

答案 3 :(得分:0)

试用JEP