正则表达式将CamelCase标识符转换为UPPER_CASE

时间:2013-03-14 12:47:58

标签: regex

我有以下几行

GetAuthServerList
GetAuthServerConfiguration
AddAuthServer

我必须将它们转换为

GET_AUTH_SERVER_LIST
GET_AUTH_SERVER_CONFIGURATION

等等。

我尝试在sublime文本编辑器中将([A-Z][a-z]+)替换为\1_,但它也替换了最后一次搜索。如何跳过该线路的最后一场比赛?

我可以同时插入_并在一次替换中将小写字母设为大写吗?

3 个答案:

答案 0 :(得分:3)

找到:([a-z])([A-Z])
替换为:\1_\2
您可以选择在sublime文本中将选择转换为大写。

答案 1 :(得分:2)

我没有安装sublime,但试试这个:

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

将其替换为&_

   replace ([a-z])(?=[A-Z])  with \1_
vim 中的

将是:

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

答案 2 :(得分:0)

使用否定前瞻进行一点修改应该有帮助

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