用vim替换单词边界

viv*_*ino 2 regex vim replace sed

我想将对象属性引用转换为数组,如下所示:

$ stuff-> a_property

$的东西[ 'a_property']

我试过了

s/->.*\>/['\0'\]/g
Run Code Online (Sandbox Code Playgroud)

但它给了我

$的东西[ ' - > a_property']

anu*_*ava 5

您可以使用捕获的组:

:%s/->\(.*\)\>/['\1'\]/
Run Code Online (Sandbox Code Playgroud)

\(.*\)->在用于替换的组#1 之后用于捕获值.这会给你$stuff['a_property']

编辑:如果你想每行多次替换,那么使用:

:%s/->\(.\{-}\)\>/['\1'\]/g
Run Code Online (Sandbox Code Playgroud)

.\{-}是非贪婪的比赛,而.*贪婪.