大文字の文字列をまとめたまま、キャメルケース文字列を個々の単語に分割しようとしています。たとえば、「fooBarABABFooBar」は「foo bar ABAB foo bar」になります。いくつかの要件があります。「ABAB」などの略語は大文字のままにしておく必要がありますが、他の単語の最初の文字は小文字にする必要があります。次の正規表現を使用して、キャメルケースをバラバラにすることができました。
def str = "fooBarABABFooBar"
println str.replaceAll(/(?<=[a-z])(?=[A-Z])/) { ' ' + it }
これで「foo Bar ABABFoo Bar」になります。ここから「foo Bar ABAB Foo Bar」に移動できましたが、目的の出力にはなりませんでした。何か案は?ありがとう!