2009-10-23 28 views
2

我有像这样一个文本文件:使用VI编辑器时,我的REGEX有什么问题?

<table width="10"> 
</table> 

我打开vi编辑器的文档。我想用nothing代替width =“somenumber”的所有实例。我在VI编辑器中发出这个命令:

:0,$s/width="[\d]+"//gc 

VI说没有找到模式。我也试过这和它好好尝试一下工作:

0,$s/width="[0-9]+"//gc 

下面这一个工作:

:0,$s/width="\d\d"//gc 

这有什么错我的头两个表达式?

回答

5

您有两个错误在您的正则表达式!

首先,在其周围使用\d而不是[]。您可能会混合使用字符类,如:alpha::digit:等。

二,转义+符号。默认情况下,你应该转义它。

所以,你的正则表达式是:

:0,$s/width="\d\+"//gc 

而且,请,张贴在计算器之前阅读帮助:

:h :s 

您还可能有兴趣在此帮助部分:

:h magic 
1

你想:

:0,$s/ width="\d\+"//gc 

\d是不是一个字符类中公认的(或者更确切地说,它是公认的信d),并没有+反斜杠不被认可vim的元字符“ s BRE。你也可能需要width之前的空间被淘汰。

+0

我只是试过这个,它说没有发现模式0,$ s/width =“[0-9] +”// gc – John 2009-10-23 21:33:02

+0

如何删除 方括号? – UncleO 2009-10-23 21:34:45

+0

:0,$ s/width =“\ d +”// gc – UncleO 2009-10-23 21:35:25

0

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