如何将数字添加到字符串\d

如何将数字添加到字符串\d

我想替换一个文件的所有内容string\d\+ ,例如将字符串 10 替换为字符串 20。我尝试使用s/\(string\)\d\+/\1\=submatch(0)+10 我知道的\=判断\1是否存在。但是help: submatch像这样使用。我该如何纠正这个命令或者有另一种方法来实现它。

答案1

:s/\(string\)\d\+/\1\=submatch(0)+10

您已经接近:

  • 不能混合使用正常替换 ( \1) 和:help sub-replace-expression。一旦您使用后者,全部的替换必须是一个表达式。
  • 为了增加数字,需要单独捕获它。submatch(0)是整个匹配;你不能简单地添加10到它。
  • 如果你想更换全部出现,您仍然需要添加/g标志和:[range];否则,只有当前行的第一个匹配项才会增加。

以下是完整捕获的一个变体:

:%substitute/\(string\)\(\d\+\)/\=submatch(1) . (submatch(2) + 10)/g

由于您没有对string前缀执行任何操作,因此我们可以通过以下方式对其进行断言(但不包括它):help /\zs;那么我们不需要任何捕获:

:%substitute/string\zs\d\+/\=submatch(0) + 10/g

相关内容