Мне нужно разбить строку на слова дефисом. Например:Как написать это Java-регулярное выражение?
"WorkInProgress" преобразуется в "Work-In-Progress"
"NotComplete" преобразуется в "NotComplete"
Большинство случаев одно слово начинается с капитала и заканчивается в нижнем регистре.
Но есть одно исключение: «CIInProgress» следует преобразовать в «CI-In-Progress».
Я написал, как код ниже, любой шаблон, который имеет строчный регистр или «CI», за которым следует капитал, будет добавлен «-» в середине. Но он не может работать для «CIInProgress». Может ли кто-нибудь сказать мне, как исправить это?
String str;
String pattern = "([a-z|CI]+)([A-Z])";
str= str.replaceAll(pattern, "$1\\-$2");
Вы должны понимать, что класс символов является лишь набор символов, но не набор подстрок. '[A | BC]' означает «A» или «|» или «B» или «C» и является таким же, как '[B | CA]' или '[| CBA]' –