E486找不到模式:数组[0]



我现在正在用vim艰难地编写一些与learn c相关的代码,并且我对替换函数有一个问题:

我对谷歌和vim教程以及其他stackoverflow问题进行了一些研究。

但我没能找到/理解我的问题的答案。

为了做到这一点,我想用指针表示法替换数组。

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

此命令将更正以下错误:E486:找不到模式:name[0]

如果我在没有[0]的情况下执行相同的命令,它可以正常工作,但这不是我想要做的

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

我如何在考虑到那些方形braquet[]的情况下进行搜索/替换

提前感谢您的帮助

您需要用转义方括号,因此这将起作用:s/name[0]/new_name(0)/

原因是,在大多数正则表达式引擎中,[]用于对多个字符进行分组(请参见:h /character-classes),因此[abc]将匹配a、b或c。

请注意,您可以使用M来告诉vim使用nomagic(用法:s/Mname[0]/new_name/)。

参见:h magic

您需要使用一些转义序列,如name[0]表示[]被用作输入文字,不携带/表示任何特殊功能[类似分组]。

方括号在正则表达式中很特殊:它们表示字符类。因此,您的正则表达式尝试匹配name0(因为类中只有一个字符)。

要匹配文字括号,请使用反斜杠转义:

name[0]

最新更新