如何在 vim 中将字符串(4000 到 4200)替换为(5000 到 5200)..
最佳答案
另一种可能性:
:%s/\v<4([01]\d{2}|200)>/5\1/g
这个也能做 200 次,而且由于使用了 \v switch,所以它不会过度“倾斜牙签综合症”。 .
编辑 #1:添加词边界 anchor ( '<'
和 '>'
)以防止替换 "14100"
等等
编辑 #2:在某些情况下,“单词边界”不足以正确捕获所需的模式。如果您希望空格作为分隔因素,表达式会变得更加复杂。
:%s/\v(^|\s)@<=4([01]\d{2}|200)(\s|$)@=/5\1/g
其中“(^|\s)@<=
”是“行首”或“\s
”的后视断言,“(\s|$)@=
”是“行尾”或“的先行断言” \s
".
关于vim - vim 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1198878/