我正在尝试在字符串表达式上分隔标记。表达式如下所示:
-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