in maven-resolver-util/src/main/java/org/eclipse/aether/util/version/GenericVersion.java [219:269]
public boolean next() {
if (index >= versionLength) {
return false;
}
int state = -2;
int start = index;
int end = versionLength;
terminatedByNumber = false;
for (; index < versionLength; index++) {
char c = version.charAt(index);
if (c == '.' || c == '-' || c == '_') {
end = index;
index++;
break;
} else {
if (c >= '0' && c <= '9') { // only ASCII digits
int digit = c - '0';
if (state == -1) {
end = index;
terminatedByNumber = true;
break;
}
if (state == 0) {
// normalize numbers and strip leading zeros (prereq for Integer/BigInteger handling)
start++;
}
state = (state > 0 || digit > 0) ? 1 : 0;
} else {
if (state >= 0) {
end = index;
break;
}
state = -1;
}
}
}
if (end - start > 0) {
token = version.substring(start, end);
number = state >= 0;
} else {
token = "0";
number = true;
}
return true;
}