Regex para converter CamelCase para camel_case em java

Eu entendo porque a saída desejada não é dada para converter usando regex uma string comoFooBar paraFoo_Bar que em vez disso dáFoo_Bar_. Eu poderia ter feito algo com String.substringsubstring(0, string.length() - 2) ou apenas substituiu o último caractere, mas acho que há uma solução melhor para esse cenário.

Aqui está o código:

<code>String regex = "([A-Z][a-z]+)";
String replacement = "$1_";

"CamelCaseToSomethingElse".replaceAll(regex, replacement); 

/*
outputs: Camel_Case_To_Something_Else_
desired output: Camel_Case_To_Something_Else
*/
</code>

Pergunta: Procurando uma maneira mais simples de obter a saída desejada?

questionAnswers(9)

yourAnswerToTheQuestion