Я нашел блестящий RegEx, чтобы извлечь часть выражения camelCase или TitleCase.
(?<!^)(?=[A-Z])
Работает так, как ожидалось:
- значение → значение
- camelValue → верблюд/значение
- TitleValue → Название/Значение
Например, с Java:
String s = "loremIpsum";
words = s.split("(?<!^)(?=[A-Z])");
//words equals words = new String[]{"lorem","Ipsum"}
Моя проблема в том, что в некоторых случаях это не работает:
- Случай 1: VALUE → V/A/L/U/E
- Случай 2: eclipseRCPExt → eclipse/R/C/P/Ext
На мой взгляд, результат будет следующим:
- Случай 1: VALUE
- Случай 2: eclipse/RCP/Ext
Другими словами, учитывая n символов верхнего регистра:
- Если за n символами следуют строчные буквы, группы должны быть: (n-1 символов)/(n-th char + нижние символы)
- Если n символов находится в конце, группа должна быть: (n символов).
Любая идея о том, как улучшить это регулярное выражение?