Вот как я бы подошел к этому. Вы можете пройти через это и поместить gc1 ["letter"], gc1 ["number"], gc2 ["letter"] и gc2 ["number"] в окно просмотра, чтобы увидеть, что это сработало (шаг после последнего строка кода здесь, конечно).
Обычное выражение будет принимать либо шаблон, требующий одну или несколько букв и цифр в каждом случае.
Regex pattern = new Regex("^(?<letter>[a-zA-Z]+)(?<number>[0-9]+)|(?<number>[0-9]+)(?<letter>[a-zA-Z]+)$");
string s1 = "12A";
string s2 = "B45";
Match m1 = pattern.Match(s1);
Match m2 = pattern.Match(s2);
GroupCollection gc1 = m1.Groups;
GroupCollection gc2 = m2.Groups;