You can create two capture groups with the following expression:
Regex
([0-9\.]+)|([+*\/\-])
Brief explanation
This alternates between:
[0-9\.]+
which matches the floating point numbers
and
[+*\/\-]
which matches the mathematical symbols.
Example Java code
List<String> matchList = new ArrayList<String>();
try {
Pattern regex = Pattern.compile("([0-9.]+)|([+*/\\-])");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}