【发布时间】:2014-12-23 15:42:37
【问题描述】:
我想拆分用户使用正则表达式输入的条件/关系/逻辑表达式,以便在运行时我可以评估用户输入的表达式。以下是用户输入的几个示例表达式。
Expression1 : (a==b && (c >= 10 || d!=0)) || ( a > b)
Expression2 : (c==d && a==b)
现在我想在字符串数组中拆分整个表达式,例如表达式 2,它会像
string str1 = c==d;
string str2 = a==b;
用户输入的表达式可以有多个条件,因此不知道如何进行。
谢谢
【问题讨论】:
-
你为什么不直接用 '&&' 分割你的字符串呢?另一个问题是:您希望从表达式 1 中得到什么?括号应该怎么处理?
-
@C4ud3x - 是的,应该如何处理刹车,而且它并不总是修复它只会 && .. 下次用户可以使用 || 输入或任何其他
-
哈。伙计,你不应该问我。我问你你想要它怎么样。我们也许可以告诉你如何编写一些东西,但你应该已经知道你希望它如何表现。很大程度上取决于您的目标。
-
黑暗(而有趣)的解析艺术。这里的主要问题是:获取 && 和 || 的所有“布尔操作数”运算符并将它们存储在数组中将消除运算符的优先级,以及括号提供的优先级。您应该考虑的是编写简单的解析器来正确评估表达式。结果应该是逻辑一致的中间表示,您可以将其用于评估。对于简单的情况,请参阅此答案:stackoverflow.com/a/2118309/3754223 更复杂的结构可能会变得不令人满意。
-
第一个表达式的结果是什么?
标签: c# regex logical-operators