Как заменить заглавные буквы на строчные с помощью регулярных выражений? - PullRequest
22 голосов
/ 13 июля 2010

Мне нужно заменить заглавную букву в имени переменной на строчную и добавить пробел

Например:

NotImplementedException должно быть Not implemented exception UnhandledException должно быть Unhandled exception

Ответы [ 3 ]

38 голосов
/ 13 июля 2010

Поскольку вы не указали язык, я приведу пример на C #.Я уверен, что ваш язык предложит что-то подобное.

String s = "NotImplementedException";
s = Regex.Replace(s, @"\B[A-Z]", m => " " + m.ToString().ToLower());
// s = "Not implemented exception"
1 голос
/ 13 июля 2010

Это можно сделать в sed с помощью одной команды:

$ echo "NotImplementedException" | sed 's/\B[A-Z]/ \l&/g'
Not implemented exception

Но поддержка \l\u, \L, \U и \E) редко встречается в Regexреализации на разных языках.Я только уверен, что в Perl это реализовано.

0 голосов
/ 13 июля 2010

@ Игнасио, прошу не согласиться.Конечно, это не то, что можно сделать одним оператором с помощью простых регулярных выражений.Но команда sed:

sed -e 's/\([a-zA-Z]\)C/\1 c/g' infile.txt

заменит все вхождения «C» на «c», когда «C» сразу предшествует буква.Все, что нужно сделать ОП - это сделать 26 вариантов этого, что может быть утомительно.И получить условие, при котором изменяется регистр, тоже может быть сложно, но это всегда имеет место с использованием регулярных выражений для глобального поиска и замены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...