我从其他人编写的配置文件中读取了一个逻辑字符串,其中包含如下表达式:
(VALUE_1)OR((NOT(VALUE_2))AND(NOT(VALUE_3)))
Run Code Online (Sandbox Code Playgroud)
但是,对于从哪里开始解析它并比较我在其他地方存储为相同字符串名称的变量的值,我有点困惑。我认为需要使用 LambdaExpression 是否正确?字符串是否需要以某种方式拆分并作为组成部分而不是整体进行分析?
编辑:
似乎Flee做了我需要它做的事情,我可以在使用该库评估表达式之前将 VALUE_x 的名称定义为 true 或 false。
在实现一个小脚本解析器时,我遇到了这个代码示例的问题 - 想要只选择"if {}"语句之间的部分,它是贪婪的并且选择所有包括最后一行.我想我应该使用的是一个负面的前瞻.
if [condition1]
{
task1
setparameters{a}
task2
}
if [condition2]
{
task3
}
setparameters{b}
Run Code Online (Sandbox Code Playgroud)
目前,我有:
if\b\s\[.*\]\s\{(\s|.)*\}
Run Code Online (Sandbox Code Playgroud)
我想这并不像打破另一个'if'那么简单,因为之前可能还有别的东西.是否可以计算相同数量的开合括号?还是有其他神奇的方式我可以选择其中一个'if'语句?