2014-10-30 277 views
1

我起草相關的一些代碼,學習C用vim艱辛的道路政黨成員,現在我有替換功能的一個問題:E486找不到模式:數組[0]

我已經做了一些研究谷歌和Vim教程和其他stackoverflow問題。

但我沒有設法找到/理解我的問題的答案。

爲了做到這一點,我想替換指針表示法的數組。

:%s/name[0]/*(name)/g 

此命令特羅以下錯誤:E486:模式未找到:名稱[0]

如果我沒有相同命令的[0]它工作正常,但它不是我想要做的

:%s/name/*(name)/g 

我該怎麼辦查找/替換帳戶採取這些方braquet []

在此先感謝您的幫助

回答

4

您需要使用\逃脫方括號,所以這會工作:s/name\[0\]/new_name(0)/

的原因是,在大多數正則表達式引擎,[]被用於將多個字符(見:h /character-classes) ,所以[abc]將匹配a,b或c。

請注意,您可以使用\M來告訴vim使用nomagic(用法:s/\Mname[0]/new_name/)。

:h magic

2

您需要使用一些轉義序列,如name\[0\]\表示[]被用作輸入文字,不帶/表示任何特殊功能[如分組]。

2

方括號在正則表達式是特殊的:他們表示一個Character Class。所以你的正則表達式試圖匹配name0(因爲這個類只有一個字符)。

要匹配字面括號,用反斜槓轉義:

name\[0\] 
相關問題