我有一个代码,object.attribute
其中属性可以是数组示例:object.SIZE_OF_IMAGE[0]
或简单的字符串。我想搜索所有出现的情况"object.attribute"
并将其替换为self.lowercase(attribute)
我想要 vim 上的正则表达式来执行此操作。
我可以使用它:%s/object.*/self./gc
并手动替换它,但速度非常慢。
这里有些例子:
object.SIZE
到self.size
object.SIZE_OF_IMAGE[0]
到self.size_of_image[0]
你基本上只需要两件事:
:help /\(
允许您存储之间匹配的内容\(...\)
,然后在替换中(甚至之后在模式本身中)引用它(通过\1
、等)。\2
:help s/\L
的替换操作使所有内容都变成小写。这将为您提供以下命令:
:%substitute/\<object\.\(\w\+\)/self.\L\1/g
Run Code Online (Sandbox Code Playgroud)
笔记:
\<
schlobject
\w\+
匹配字母、数字和下划线(因此它满足您的示例);这里可以有多种替代方案。