private String solvePlusMinus(String expression) throws Exception {

        //Oops... It was very difficult to find this regex out. :(
        //Split string by + and - where they are not immediately after an E
        //or an operator.
        String[] subExp = expression.split(
                "(?<!([E]|"
                + "\\Q" + PLUS_SIGN + "\\E|"
                + "\\Q" + MINUS_SIGN + "\\E|"
                + "\\Q" + MULTIPLY_SIGN + "\\E|"
                + "\\Q" + DIVIDE_SIGN + "\\E|"
                + "\\Q" + POWER_SIGN + "\\E"
                + "))(\\+|\\-)"
        );

        //Operator (+,-) sequence.
        ArrayList<String> operators = new ArrayList<>();

        //Fill operator sequence out.
        for (int i = 1; i < expression.length(); i++) {
            if ((expression.charAt(i) == '+' || expression.charAt(i) == '-')
                    && expression.charAt(i - 1) != 'E'
                    && !isOperator(expression.charAt(i - 1))) {

                operators.add(String.valueOf(expression.charAt(i)));
            }
        }

        //Solve left-most expression of the string.
        double value = Double.parseDouble(selectAndSolve(subExp[0]));

        //Solve other expressions and do operations with first value.
        for (int i = 1; i < subExp.length; i++) {
            if (operators.get(i - 1).equals("+")) {
                //Add
                value += Double.parseDouble(selectAndSolve(subExp[i]));
            } else {
                //Subtract
                value -= Double.parseDouble(selectAndSolve(subExp[i]));
            }
        }

        //Return solved sub expression.
        return String.valueOf(value);
    }