0
我想替换小写字母不是以[
开头以大写字母,我想我非常接近。gvim:替换小写字母不以大写开头
我试过这种方法::%s/\(\[\)\@![a-z]\+\>/\U&/g
这不太合适,我已经盯着它太久了 - 因此这个'给朋友打电话'。
我认为这是符合[a-z]\+
无论..
我想替换小写字母不是以[
开头以大写字母,我想我非常接近。gvim:替换小写字母不以大写开头
我试过这种方法::%s/\(\[\)\@![a-z]\+\>/\U&/g
这不太合适,我已经盯着它太久了 - 因此这个'给朋友打电话'。
我认为这是符合[a-z]\+
无论..
的\@!
是在当前位置零宽度匹配,但你当前位置之前需要匹配。什么\[\@<![a-z]
(你不需要分组)说是不是一个左括号和一个小写字符;第二个分支意味着第一个分支。取而代之的是使用\@<!
来表示一个小写字母,而不是前面的一个开始括号。 (这也被称为负向后看)
的第二个问题是,它将会匹配一个单词的第二个字符,所以它变成[fix
到[fIX
。一个解决方案是断言关键字的开始与\<
:
:%s/\[\@<!\<[a-z]\+\>/\U&/g
另一个是不允许小写字符(除了左括号)字之前,太:
:%s/[[a-z]\@<!\<[a-z]\+\>/\U&/g
您还可以使用'\ l'而不是'[az]'。参见':h/\ l'。 –