整数、括弧、および+ -/を含む単純な算術式があります。このように:私はRegex
クラスc#分割演算式を文字列に変換する
public string[] SplitString(string str)
{
return Regex.Split(str, "(?<=[()-+*/])|(?=[()-+*/])");
}
でそれをやろうとしています
{(, (, 1, +, 33,), (,), (, 4, +, (, 3, -, 5,),),)}
:
((1+33)()(4+(3-5)))
私がする必要がどのようなこのようなstring[]
にこの式を分割され、
出力データが正しくない:
{(, (, 1, +, 33,), (,), (, 4, +, (, **3-5**,),),)}
結果を分割せずに計算できます。これはあなたの後のことですか? – user3185569
') - +'は、あなたが期待する以上に一致する範囲をcharクラスに作成することに注意してください。文字クラスの最後にハイフンを置きます。 –
そのエスケープされていないダッシュのほかに、私は他のやりかたをすることをお勧めします:目的のトークンを一致させてすべてのマッチのリストを返す - 単純な正規表現で終わるでしょう: 'return Regex.Matches(str、@"([ ()+ */- ] | \ d +) ")。 –