我正在尝试匹配(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/"MATCHING REGEX"/atoi(array\[\1\])/g
应该有效,但尝试使用array\\[.\\]
导致atoi(array[])
答案 0 :(得分:4)
这个怎么样?
:s/\<array\[[^\]]\+\]/atoi(\0)/
答案 1 :(得分:1)
您可以使用:
:s/array\[.\{-}\]/atoi(&)
答案 2 :(得分:0)
嗯,你并没有真正说出你正在使用什么RegEx引擎,但如果我不得不猜测这个特定的引擎可能不喜欢“非贪婪”的限定符。因此,让我们尝试使用正则表达式来消除非贪婪的限定符并使用“不关闭方括号”的字符类来代替非贪婪的“。*?”。试试这个:
阵列[([^]] *)]