2013-03-14 95 views
1

我有以下行正则表达式转换驼峰标识符UPPER_CASE

GetAuthServerList 
GetAuthServerConfiguration 
AddAuthServer 

我必须将它们转换为

GET_AUTH_SERVER_LIST 
GET_AUTH_SERVER_CONFIGURATION 

等。

我试着在崇高的文本编辑器\1_更换([A-Z][a-z]+),但它正在取代过去的搜索也。我如何跳过最后一场比赛?

我可以同时插入_并将小写字母换成大写吗?

+0

什么语言/工具? – 2013-03-14 12:50:21

+0

仅仅是一个简单的升华2 – Kaunteya 2013-03-14 12:53:54

回答

3

查找内容:([a-z])([A-Z])
替换:\1_\2
您可选择转换选择在崇高的文本为大写。

+0

哦,看起来很明显。没想到那个.. – Kaunteya 2013-03-14 13:08:13

0

使用负先行稍加修改应该帮助

([A-Z][a-z]+)(?!$) 
+0

这是匹配行的最后一个单词,但跳过最后一个字母,所以它会在第二个最后位置插入下划线。 – Kaunteya 2013-03-14 12:53:15

2

我没有做崇高的安装,但试试这个:

[a-z](?=[A-Z]) 

&_

更换
replace ([a-z])(?=[A-Z]) with \1_ 

VIM这将是:

%s/\v[a-z]([A-Z])@=/&_/g