Унарный оператор, 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 )
→ Ссылка