在vim中正则表达式

sur*_*esh 2 vim

如何在vim中将字符串(4000到4200)替换为(5000到5200)

Tom*_*lak 9

另一种可能性

:%s/\v<4([01]\d{2}|200)>/5\1/g
Run Code Online (Sandbox Code Playgroud)

这个也做200,并且它没有因为使用\ v开关而过多地受到"倾斜牙签综合症"的影响.

编辑#1:添加了单词边界锚点('<''>')以防止替换"14100"等.


编辑#2:有些情况下,"单词边界"不足以正确捕获所需的模式.如果您希望空格是分隔因子,则表达式会更复杂一些.

:%s/\v(^|\s)@<=4([01]\d{2}|200)(\s|$)@=/5\1/g
Run Code Online (Sandbox Code Playgroud)

其中" (^|\s)@<="是"行首"或" \s"和" (\s|$)@=" 的后视断言,是"行尾"或" " 的前瞻\s.


Adr*_*iuk 5

:%s/\<4\([01][0-9][0-9]\)\>/5\1/g
Run Code Online (Sandbox Code Playgroud)