我需要用小写字母替换变量名中的大写字母并添加空格
例如:
NotImplementedException
应为Not implemented exception
UnhandledException
应为Unhandled exception
答案 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种变体,这可能是单调乏味的。获得改变案例的条件可能也很困难,但使用正则表达式进行全局搜索和替换总是如此。