Сплит здесь не совсем уместен. Попробуйте вместо этого использовать средство сравнения и используйте метод group
, чтобы получить имя и версию приложения.
Pattern p = Pattern.compile("^(\\D*[^\\d\\s])\\s*(\\d.*)", Pattern.DOT_ALL);
Matcher m = p.matcher(myString);
if (m.find()) {
String appName = m.group(1);
String versionNumber = m.group(2);
...
}
Чтобы понять, как работает регулярное выражение, взгляните на следующее:
^
означает начать сопоставление в начале
(
запускает группу 1, которая будет содержать название версии
\\D*
который начинается с любого количества не цифр
[^\\d\\s]
и заканчивается чем-то, что не является ни цифрой, ни пробелом.
)
конец группы 1
\\s*
, который может быть отделен от номера версии нулем или несколькими пробелами.
(
Группа 2 содержит номер версии.
\\d
начинается с цифры
.*
и продолжает оставшуюся часть ввода.
)
Конец.