文字列式のトークンを分離しようとしています。式は次のようになります。
-1-2+-3
これは私が使用している正規表現です:
[\d\.]+|[-][\d\.]+|\+|\-|\*|\/|\^|\(|\)
これにより、次の一致が得られます。
-1
-2
+
-3
私は期待していました:
-1
-
2
+
-3
負の数を演算子と区別するにはどうすればよいですか?
文字列式のトークンを分離しようとしています。式は次のようになります。
-1-2+-3
これは私が使用している正規表現です:
[\d\.]+|[-][\d\.]+|\+|\-|\*|\/|\^|\(|\)
これにより、次の一致が得られます。
-1
-2
+
-3
私は期待していました:
-1
-
2
+
-3
負の数を演算子と区別するにはどうすればよいですか?
このパターンは、あなたが探していることをするはずです:
^(?:(?<num>-?[\d\.]+)(?:(?<op>[-+*/^])|$))+$
例えば:
var input = "-1-2+-3";
var pattern = @"^(?:(?<num>-?[\d\.]+)(?:(?<op>[-+*/^])|$))+$";
var match = Regex.Match(input, pattern);
var results =
from Group g in match.Groups.Cast<Group>().Skip(1)
from Capture c in g.Captures
orderby c.Index
select c.Value;
生産します:
-1
-
2
+
-3