我有一些文字有一些%
和一些\%
。我希望将所有%
替换为\%
,而不将\%转换为\\%
。我试过了:
%s/\\\@!%/\\%/g
但它不起作用。
示例文本可以是:
This % and this % should be replaced but not these two: \% and \%.
感谢您的帮助。
答案 0 :(得分:3)
我们可以利用?
这里的贪婪
:%s/\\\?%/\\%/g
\\\?
将匹配\
零次或一次。由于?
贪婪,如果存在\
则会消耗\%
和%
都将替换为\%
答案 1 :(得分:2)
Vim支持负面观察,如下所示:
:s/\(\\\)\@<!%/\\%/g
这打破了:
s/ # substitute...
\( # start group 1
\\ # a backslash
\) # end group 1
\@<! # group option: negative look-behind
% # a "%" sign
/ # with...
\\% # "\%"
/g # globally.
您也可以:s/%/\\%/g
后跟:s/\\\\%/\\%/g
。
答案 2 :(得分:-1)
从控制台
echo替换%和%,但不替换\%和\%。 | sed -e s /%/ \\\%/ g
给出 替换%和%但不是\%和\%。
希望这是你正在寻找的东西。如果是这样,只需使用
执行整个文件cat FileName | sed -e s /%/ \\\%/ g