使用VI编辑器时我的REGEX出了什么问题?

时间:2009-10-23 21:29:03

标签: regex vim

我有一个类似的文本文件:

<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

我的前两个表达有什么问题?

3 个答案:

答案 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)

只能使用两位数的宽度,不是吗?