2016-08-18 6 views
0

C#で正規表現の問題が少しあります。各試合は、新しい行に書かれているRegEx.Matchesで一致するパターンが印刷されている理由

string str ="1+44+(2+3)"; 
string pattern = @"((\d+)|[+*-/()])"; 

foreach (Match m in Regex.Matches(str,pattern)) 
{ 
    Console.WriteLine(m.Groups[1].Value); 
} 

マイコード、代わりに「」で宇宙病気別の各試合を節約するために。

1、+ 44、+、(2、+ 3、)

私は(delimterが何らかの理由のために含まれている)を得る:

Iはであることが印刷された結果を期待します

1、+、44、+、(、2、+、3)、(、、、d、+、)、|、[、+、*、 - 、/、(、)、] 、)

したがって、結果に区切り文字を含めないでください。

+0

参照https://repl.it/Co7Oをあなたの時間をwatingため申し訳ありませんが、私が期待される結果を取得しています。 –

+1

実際、私はあなたがどのように*パターン*をあなたの見方に分割するのか理解できません。もちろん、正規表現には問題があり、 ' - 'は文字クラスの先頭または末尾にあるか、エスケープされていなければなりません( '((\ d +)| [+ * /() - ]))。しかし、それはあなたのパターンが分割されることとは関係ありません。 –

+0

私は、+、*、/などが[]内に置かれたときにはシンボルとして扱われ、エスケープする必要はないと確信しています –

答えて

0

正しいです。私はしかし、いくつかの古い実験からさらに完全にループのための別のものを欠場していた。それはあなたがストレスを受けたときに起こることです。

私は

関連する問題