2009-10-23 64 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

它只能使用兩位數的寬度,不是嗎?