RegEx para dividir camelCase ou TitleCase (avançado)

Achei umbrilliant RegEx para extrair a parte de uma expressão camelCase ou TitleCas

 (?<!^)(?=[A-Z])

Funciona como esperado:

valor -> valorcamelValue -> camel / ValorTitleValue -> Título / Valor

Por exemplo, com Java:

String s = "loremIpsum";
words = s.split("(?<!^)(?=[A-Z])");
//words equals words = new String[]{"lorem","Ipsum"}

Meu problema é que ele não funciona em alguns casos:

Caso 1: VALUE -> V / A / L / U / ECase 2: eclipseRCPExt -> eclipse / R / C / P / Ext

Na minha opinião, o resultado deve ser:

Caso 1: VALUECase 2: eclipse / RCP / Ext

Em outras palavras, dados n caracteres maiúsculos:

se os n caracteres forem seguidos por caracteres minúsculos, os grupos deverão ser: (n-1 caracteres) / (n-ésimo caractere + caracteres inferiores)se os n caracteres estiverem no final, o grupo deve ser: (n caracteres

Alguma idéia de como melhorar esse regex?

questionAnswers(9)

yourAnswerToTheQuestion