我有一个类似的文本文件:
<table width="10">
</table>
我用VI编辑器打开文档。我想用什么都不替换width =“somenumber”的所有实例。我在VI编辑器中发出这个命令:
:0,$s/width="[\d]+"//gc
VI说没有发现任何模式。我也尝试过这个并不起作用:
0,$s/width="[0-9]+"//gc
以下这个有效:
:0,$s/width="\d\d"//gc
我的前两个表达有什么问题?
答案 0 :(得分:5)
你的正则表达式中有两个错误!
首先,在\d
周围使用[]
。您可能会将其与:alpha:
,:digit:
等字符类混合使用。
其次,逃离+
标志。默认情况下你应该逃避它。
所以你的正则表达式是:
:0,$s/width="\d\+"//gc
而且,请先在stackoverflow上发帖阅读帮助:
:h :s
您可能也对此帮助部分感兴趣:
:h magic
答案 1 :(得分:1)
你想:
:0,$s/ width="\d\+"//gc
\d
在字符类中未被识别(或者更确切地说,它被识别为字母d
),并且没有反斜杠的+
不会被vim
识别为元字符{1}}的BRE。您也可能希望消除width
之前的空格。
答案 2 :(得分:0)
只能使用两位数的宽度,不是吗?