0

助けが必要な最後の正規表現の問題。私がやろうとしているのは、正規表現に単項記号を認識させながら、数式を解析できるようにすることです。以下を使用して整数を解析しています。

[\+\-]?[0-9]+

次の 2 つのシナリオでうまく機能します。

myVar = -5
myVar = +5

正規表現は、-5 と +5 の両方を整数として正しく識別します。私の問題は、次のようなシナリオがある場合です。

myVar = 7-5

ただし、これは正しく一致します。

myVar = 7*-5

7-5 シナリオで Regex が行っているのは、7 と -5 の 2 つの整数を識別することです。実際には、整数 (7)、マイナス記号 (-)、および別の整数 (5) を識別できるようにする必要があります。これを行うには、どの正規表現パターンが必要ですか?

前もって感謝します。ちなみに、これは .NET Regex です。

4

3 に答える 3

4

正規表現は、数式を解析するための最良の選択ではありません。Recursive descent parserまたはReverse Polish notationまたは他のより適切なアルゴリズムを見てください。

于 2011-07-03T17:39:03.983 に答える
-1

これを使って:

  ((\d)+[\+\-\*/])*

次に、MatchCollectionとGroupsを使用して、目的の結果を取得します。

于 2011-07-03T17:50:22.477 に答える