You can do this with a regular expression: (.*?)(\\d+)$
Let me explain this starting at the end. $ matches the end of the string (I am not considering multi line strings here). \d (in java code needs to be escaped as \\d) matches any digit, so the last capturing group matches the integer at the end of the string. The first group matches all characters in front of that. A non-greedy evaluation *? is required in the first group, otherwise it would just match the whole string.
As a whole working example:
Matcher m = Pattern.compile("(.*?)(\\d+)$").matcher(yourString);
if (m.matches()) {
String stringPart = m.group(1);
int intPart = Integer.parseInt(m.group(2));
}