You could try to split on (?<=\D)(?=\d)|(?<=\d)(?=\D), like:
str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
It matches positions between a number and not-a-number (in any order).
(?<=\D)(?=\d)– matches a position between a non-digit (\D) and a digit (\d)(?<=\d)(?=\D)– matches a position between a digit and a non-digit.