私はC#で関数電卓を作成しており、ユーザーがエントリを追加できる線形関数のコレクションがあります。(...)
これらの関数や他の数学関数の使用法を確認し、関数の名前との内容を追跡し、それらを評価の結果に置き換えるために、数式を事前に解析する必要があります。
この式を例にとってみましょう。
Ans1+(x*2)-(y^3)+abs(z)-avg(x, 5, Ans2)-my2ndFunc(y - (x * 2))
方程式でこれらを一致させる必要がある独自の正規表現を作成しました。
abs(z)
avg(x, 5, Ans2)
my2ndFunc(y - (x * 2))
Regex Tester v1.5.3を使用してテストしましたが、どの項目ともまったく一致しませんでした。これは私が使用した正規表現です:
\b([a-z][a-z0-9]*)\((..*)\)\b
これらの関数に一致し、関数名とパラメーターの内容を格納する正規表現はどれですか?また、誰かが一致を実行してキャプチャグループのコンテンツを取得する方法に関するサンプルコードを提供した場合はクールですが、必須ではありません。
編集 実際の数学的パーサーは必要ありません。操車場アルゴリズムを実装するmuParserがあります。単純な検索と置換を行う必要があります。数学パーサーが実際の数学を処理します。評価する部分を見つけるために正規表現が必要です。
一致する単純な正規表現が必要です。 myfuncname(any content here)