如何用正则表达式用小写字母替换大写字母?

时间:2010-07-13 08:32:15

标签: c# regex

我需要用小写字母替换变量名中的大写字母并添加空格

例如:

NotImplementedException应为Not implemented exception UnhandledException应为Unhandled exception

3 个答案:

答案 0 :(得分:38)

由于您没有指定语言,我将在C#中给出一个示例。我相信你的语言会提供类似的东西。

String s = "NotImplementedException";
s = Regex.Replace(s, @"\B[A-Z]", m => " " + m.ToString().ToLower());
// s = "Not implemented exception"

答案 1 :(得分:1)

可以使用单个命令在sed中完成:

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

但对\l(以及\u\L\U\E)的支持在不同语言的Regex实施中很少见。我只确定Perl实现了这一点。

答案 2 :(得分:-5)

@Ignacio,我不同意。当然,这不是可以在一个带有普通正则表达式的语句中完成的事情。但是sed命令:

sed -e 's/\([a-zA-Z]\)C/\1 c/g' infile.txt
当'C'前面紧跟一个字母时,

会将所有出现的'C'替换为'c'。所有OP要做的就是制作26种变体,这可能是单调乏味的。获得改变案例的条件可能也很困难,但使用正则表达式进行全局搜索和替换总是如此。