Унарный оператор, split с Regex
Смотрите, например у меня есть такое выражение
string expression = "(-1+-2)+(20*2/-4)";
Мне нужно его превратить в
string[] split = { "(" , "-1" , "+" , "-2" ,")" , "+" , "(" , "20" , "*" , "2" , "/" , "-4" , ")"};
Что я пробовал
string[] split = Regex.Split(line, @"([*()\^\/]|(?<!E)[\+\-])");
split = split.Where(empty => !string.IsNullOrEmpty(empty)).ToArray();
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
string expression = "(-1+-2)+(20*2/-4)";
string[] tokens = Regex.Split(expression, @"(\b[-+*\/]|[+-]?\d+|[-+*\/()])").Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();
Console.WriteLine(string.Join(" ", tokens));
( -1 + -2 ) + ( 20 * 2 / -4 )