2015-05-20 61 views
0

我想替换小写字母不是[开头以大写字母,我想我非常接近。gvim:替换小写字母不以大写开头

我试过这种方法::%s/\(\[\)\@![a-z]\+\>/\U&/g 这不太合适,我已经盯着它太久了 - 因此这个'给朋友打电话'。

我认为这是符合[a-z]\+无论..

回答

1

\@!是在当前位置零宽度匹配,但你当前位置之前需要匹配。什么\[\@<![a-z](你不需要分组)说是不是一个左括号和一个小写字符;第二个分支意味着第一个分支。取而代之的是使用\@<!来表示一个小写字母,而不是前面的一个开始括号。 (这也被称为负向后看

的第二个问题是,它将会匹配一个单词的第二个字符,所以它变成[fix[fIX。一个解决方案是断言关键字的开始与\<

:%s/\[\@<!\<[a-z]\+\>/\U&/g 

另一个是不允许小写字符(除了左括号)字之前,太:

:%s/[[a-z]\@<!\<[a-z]\+\>/\U&/g 
+0

您还可以使用'\ l'而不是'[az]'。参见':h/\ l'。 –

相关问题