Если вам нужно разбить входные строки на соответствующие части, попробуйте следующее регулярное выражение: (\d{6})\s*([a-zA-Z]*)(\d*)
Для 123456AB123
группа 1 будет 123456
, группа 2 будет AB
, а группа 3 будет 123
.
Когда группы отсутствуют, они будут просто пустой строкой.
Обратите внимание, что если единственное различие между вариантами будет в группах (группа 1 всегда существует, группы 2 и 3 могут быть пустыми), тогда if-else для разных регулярных выражений не понадобится. Вместо этого у вас может быть что-то вроде этого (псевдокод):
if(matches) {
groups[3] = extractGroups();
//groups[0] should always exist
if(groups[1] is not empty) {
...
}
if(groups[2] is not empty) {
...
}
} else {
handle non-match
}