正規表現を使用した数式の検証を探しています。これが私が使用しているサンプルコードです:-
string equation = "(a+b)*10";
bool b = false;
Regex rx = new Regex(@"^((?<o1>[^-+*/()]+|\([^-+*/()]+\)|(?<p>\()+[^-+*/()]+|[^-+*/()]+(?<-p>\)))[-+*/])+(?<o2>[^-+*/()]+|\([^-+*/()]+\)|(?<p>\()+[^-+*/()]+|[^-+*/()]+(?<-p>\)))(?(p)(?!))$");
if (rx.IsMatch(equation))
{
b = true;
}
Like "(a+b)*100" という表現で問題なく動作しています。つまり、「(a+b))*100」または「(a+b*100」または「(a+b)*100)」のような中括弧の配置を間違えると、完全な検証が行われます。しかし、「Sum(1,2)」や Sqrt(8) などのユーザー定義関数の紹介に行くと、検証に失敗しています。
これで自分の機能も検証したい。「Sum(1,2)」、「Sum(1,2」、「Sum1,2)」、「Sum(1,2))」のように。つまり、ブレースの適切な使用に注意する必要があります。
注:- 私は ANTLR を使用してこれらの機能を作成しています。
ありがとう