我正在使用vim查找一个四位数字并替换最后一位数字,但与使用println(Foo().alias.dynamicType)
值作为后引用的新学校sed不同,它使用${1}
而我是努力追加以下数字。我需要这样做:
我想我需要\1
其中是零长度字符。
我试过s/\(=[0-9]\{3\}\)4/=\1<xxx>5/g
但它没有使用反向引用。
有趣的是s/\(=[0-9]\{3\}\)4/=${1}5/g
正确地做到了这一点,但实际上有15个后向引用组时有一个极端情况......
答案 0 :(得分:4)
只能有9个子匹配。 \1
到\9
和\0
这是整场比赛。您可以在:help s/\1
或:help /\1
的帮助中看到此信息,其中只列出1到9.因此,对于尾随数字没有歧义。 \15
始终是第一个子匹配,后跟一个5.如果你有超过9个,你也会收到错误。
如果你使用所有这些,你的正则表达式可能太复杂了。
如果你想在替换命令中进行添加,我会使用替换表达式。这是通过将\=
作为替换的开头来完成的,并将其后面的内容视为vim表达式。
:s/=\zs\d\+/\=submatch(0) + 1/g
此功能的帮助页面为:help sub-replace-expression