Here is my Comparator implementation for such a sort:
(strings can start from any chars)
public class StringNumberComparator implements Comparator{
@Override
public int compare(String o1, String o2) {
int i1 = this.getRearInt(o1);
int i2 = getLeadingInt(o2);
String s1 = getTrailingString(o1);
String s2 = getTrailingString(o2);
if(i1==i2)
return s1.compareTo(s2);
if(i1>i2)
return 1;
else if(i1