regex - 用 vim 替换单词边界

标签 regex vim replace sed

我想像这样将对象属性引用转换为数组:

$stuff->a_property

进入

$stuff['a_property']

我试过了

s/->.*\>/['\0'\]/g

但它给了我

$stuff['->a_property']

最佳答案

您可以使用捕获组:

:%s/->\(.*\)\>/['\1'\]/

\(.*\) 用于将 -> 之后的值捕获到用于替换的组 #1 中。这将为您提供 $stuff['a_property']

编辑:如果您想每行进行多次替换,请使用:

:%s/->\(.\{-}\)\>/['\1'\]/g

.\{-} 用于非贪婪匹配,而 .* 用于贪婪匹配。

关于regex - 用 vim 替换单词边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31696388/

相关文章:

double 上的Java正则表达式

javascript - 为什么 HTML5 模式属性中密码的有效正则表达式不起作用?

python - 如何使用虚拟环境突出啤酒亮点

java - 在 Java 中用特殊字符前面的转义符替换特殊字符

ruby - 我如何在 Ruby 中编写一个正则表达式来确定一个字符串是否满足这个条件?

python - Python 中 doxygen 样式文档字符串的 Vim 语法高亮显示

c++ - 在 C++ 中使用 ctags 查找用构造函数声明的变量

c - 从字符串中删除标点符号,然后在替换后将其放回去

sql - 如何从 PostgreSQL 中的文本中删除分隔部分?

Javascript参数化字符串: replace(RegExp,函数)意外分组/匹配