我正在尝试验证一个包含某些条件和逻辑运算符的字符串。 例如, 我的输入表达式可能是这样的:
(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;和||评估。
答案 0 :(得分:0)
答案 1 :(得分:0)
为什么你允许“AND”和“OR”,如果你需要已经验证了输入,你仍然要替换“AND”和“OR”这两个词?只需要||和&amp;&amp;作为输入验证的一部分,跳过允许“AND”和“OR”的步骤。
验证的想法是在输入字符串上执行正则表达式。我对Regex不太了解,但我的猜测是会有人在那里可以得到一个正则表达式,以确保开括号与结尾相匹配,并且至少有两个“=”符号等等。想法。
答案 2 :(得分:0)
听起来您正在构建规则引擎/解析器并以更易于阅读的格式传递规则?
如果是这种情况,您应该查看现有的规则引擎,例如Drools。规则语法是一种易于阅读的格式,如果你的规则变得更复杂,规则引擎就会非常强大,你可以用它做更多的事情。
答案 3 :(得分:0)
试用JEP。