Use backtracking. At each position, decide how many digits to take as the next operand, and which operator to place before it.
The trick for multiplication precedence: track the "last operand" separately. When you apply *, undo the last addition/subtraction, then reapply with multiplication. If your running total is val and the last operand was prev, then multiplying by cur gives (val - prev) + (prev * cur).
Also watch for leading zeros. A number like "05" is not a valid operand. If the first digit of a multi-digit operand is '0', it must stand alone.