用于评估或验证用户在C#中输入的表达式的正则表达式

时间:2014-10-28 09:32:30

标签: c# regex logical-operators

我想分割用户使用Regex输入的条件/关系/逻辑表达式,以便在运行时我可以评估用户输入的表达式。以下是用户输入的一些示例表达式。

Expression1 : (a==b && (c >= 10 || d!=0)) || ( a > b)

Expression2 : (c==d && a==b)

现在我想在字符串数组中拆分整个表达式,例如取表达式2,它就像

string str1 = c==d;
string str2 = a==b;

用户输入的表达式可能有多个条件,因此不知道如何继续。

由于

1 个答案:

答案 0 :(得分:1)

正则表达式不适合这项工作。

如果您希望能够评估任意表达式,则需要实现或使用至少一种简单形式的解析器。

过去我使用NCalc进行简单的表达式评估任务。它非常易于使用,支持您开箱即用的所有operators,甚至可以使用variables

还有其他库可用,这只是一个例子。您也可以自己实现解析器,但它可能比您想象的更棘手。