регулярное выражение для простого математического уравнения

Я хочу распознавать целые или десятичные числа и четыре простые операции, разбитые на токены. Я не могу заставить работать десятичную дробь, не могли бы вы помочь?

Мой рег

expression = "2.7 + 3 * (1 + 2)";
String expRegString = "\\d+(\\.\\d+)*|[\\(\\)\\+\\-\\*\\/]";
Pattern expPattern = Pattern.compile(expRegString);
Matcher expMatcher = expPattern.matcher(expression);

while (expMatcher.find()){
    System.out.println(expMatcher.group());
}

дает мне"+", "3", "(" , "1", "+" , "2",")"

Изменить: правильный результат будет"2.7","+", "3", "(" , "1", "+" , "2",")"

Ответы на вопрос(2)

Ваш ответ на вопрос