如何使用正则表达式来定位_ [a-z]并使用小写字母的大写字母替换

时间:2013-04-17 17:06:06

标签: regex replace find

我继承了一堆C ++文件,需要更改函数和变量名,以满足我们新的C ++编码“标准”。

与所有C / C ++代码一样,有变量/函数,例如my_new_function或My_Newer_Function ......

Java人员强迫我们使用驼峰式的风格,所以我想做的是搜索任何下划线并使下一个字母大写并删除下划线,即:

my_new_function成为myNewFunction

My_Newer_Function成为MyNewerFunction

另外,如果名称中有一个数字,例如my_8th,它只会删除'_'以成为my8th。这应该是一个单独的正则表达式。

我有一些关于正则表达式的一般知识,但是这个已经让我感到难过..并且有这么多文件和很少的时间,我来到了SO成员的慈善聚会中寻求帮助。

提前谢谢。

是的,我知道,我应该让Java人员这样做,但我只是在这里工作......

- )

2 个答案:

答案 0 :(得分:0)

你可以这样做:

sed -r 's/_([a-z])/\U\1/g' file

See it

答案 1 :(得分:0)

根据我的经验,如果您尝试使用单个命令大量更改代码,则可能会发现异常(例如,引用文本)。

我建议你构建一个shell:

1. for each file
2.    get the names of variables/functions 
3.    for each name apply the sed command to get its new-name
4.       on the fly build a sed command to replace exactly each name with the new-name in the the file

......昂贵但安全......