Regex 正则表达式:匹配文本方括号和方括号中包含的内容,然后搜索并替换

Regex 正则表达式:匹配文本方括号和方括号中包含的内容,然后搜索并替换,regex,vim,replace,Regex,Vim,Replace,我试图匹配(a)并替换(b)以下情况: array[0] -> atoi(array[0]) array[1] -> atoi(array[1]) ... array[i+1] -> atoi(array[i+1]) 等等 (a) 我无法匹配以下表达式的任何内容array\\[(.\*?)\\\],array\\[.\*?\\],或array\\\[*\] 我能够用array\\\[.\\]匹配括号中的单个字符,此外,还可以用array\\[.\\\]匹配单行上的多个匹配的段

我试图匹配(a)并替换(b)以下情况:

array[0] -> atoi(array[0])
array[1] -> atoi(array[1])
...
array[i+1] -> atoi(array[i+1])
等等

(a) 我无法匹配以下表达式的任何内容
array\\[(.\*?)\\\]
array\\[.\*?\\]
,或
array\\\[*\]

我能够用
array\\\[.\\]
匹配括号中的单个字符,此外,还可以用
array\\[.\\\]
匹配单行上的多个匹配的段


(b) 在工作匹配之后,我认为
s/“匹配正则表达式”//atoi(array\[\1\])/g
应该可以工作,但是尝试使用
array\\[.\\]
会导致
atoi(array[])

您并没有说您使用的正则表达式引擎是什么,但如果我不得不猜测的话,可能是这个特定的引擎不喜欢“非贪婪的”合格者因此,让我们尝试使用正则表达式来删除非贪婪限定符,并使用“非闭方括号”字符类来代替非贪婪的“*?”。请尝试以下方法:

数组[([^]]*)]

这个怎么样

:s/\<array\[[^\]]\+\]/atoi(\0)/
:s/\您可以使用:

:s/array\[.\{-}\]/atoi(&)

我正在使用Vim的默认值。我不知道有多个,我想reg ex是一个标准-谢谢你让我知道。您提供的正则表达式不匹配。感谢“:s/array\[\d\]/atoi(\0)/”可以正确地用数字替换所有引用。例如:array[0]->atoi(array[0])然而,我仍然无法匹配括号内的其他索引。这些索引工作得很好,它使用和不使用前缀“\@encore2097”
\
表示单词的开头,而code\>
表示单词的结尾。在Vim中,搜索模式语法遵循grep的基本模式语法(大多数情况下),这就是为什么我们需要
\+
而不是
+
来处理多个事件。如果您的问题中有代码部分,您可以使用CTRL-K或工具栏按钮来正确设置格式。无需使用奇怪的双引号。