Where S is the string to be processed, then
output = regexp(S, '[ ()^*+/-]+', 'split');
output(cellfun(@isempty, output)) = [];
Inside the [] you would list all of the operations that you want to have cause a split. The order matters a bit: do not put the ^ first, and the - needs to be either first or last. Only the operations you put in the [] will trigger splitting -- so for example if the user had \ then it would not split there because \ is not in the list (use \\ to represent \) and if the user had .* for multiplication then the . would not trigger splitting but the * would.
If what you really want is to extract all of the constants and identifiers, then consider instead using
regexp(S, '\W+', 'split')
That will trigger splitting on any "non-word-forming" character. The "word-forming characters" are the digits, upper and lower case letters, and the underscore. Note that period is not a "word-forming character".
If you want the MATLAB .* and .^ and ./ operators to also cause splitting, then you could consider adding period to the list inside the [], but you need to think about whether the user is intended to be able to enter floating point constants like 2.5 . Handling floating point numbers correctly is a bit tricky: is 2.^3 intended to convey floating 2.0 raised to the power 3, or is it intended to convey integer 2 raised element-wise to the power of 3? In MATLAB, 2..^.3 is a valid expression conveying floating point 2.0 raised element-wise to the power floating point 0.3 .
If you need to handle floating point, then it is best to specify exactly which floating point forms are to be permitted. Do you permit 'd' floating point as well as 'e' floating point? 3.5e2 -> 350, 3.5d2 -> 350 ? MATLAB does. How about complex numbers? When is 1+2i to be split as-if the + is addition, versus when it is recognized as number-forming. Does 1+2i^2 indicate complex(1,2)^2, (1+2i)^2, or does it represent 1+(2i)^2 ?