Я должен заменить прописную букву в имени переменной со строчной буквой и добавить пространство
Например:
NotImplementedException
должен быть Not implemented exception
UnhandledException
должен быть Unhandled exception
Поскольку вы не указали язык, я приведу пример на C #. Я уверен, что на вашем языке есть что-то подобное.
String s = "NotImplementedException";
s = Regex.Replace(s, @"\B[A-Z]", m => " " + m.ToString().ToLower());
// s = "Not implemented exception"
@Ignacio, позволю себе не согласиться. Конечно, это не то, что можно сделать в одном выражении с помощью обычных регулярных выражений. Но команда sed:
sed -e 's/\([a-zA-Z]\)C/\1 c/g' infile.txt
заменит все вхождения 'C' на ' c', если 'C' непосредственно предшествует буква. Все, что нужно сделать OP, это сделать 26 вариантов этого, что может быть утомительно. И получить условие, при котором регистр изменяется, тоже может быть сложно, но так всегда бывает при использовании регулярных выражений для глобального поиска и замены.
Это можно сделать в sed с помощью одной команды:
$ echo "NotImplementedException" | sed 's/\B[A-Z]/ \l&/g'
Not implemented exception
Но поддержка \ l
(и \ u
, \ L
, \ U
и \ E
) редко встречаются среди реализаций Regex. на разных языках. Я только уверен, что в Perl это реализовано.