104116001|PRODUCT|511|RAMP||2016-03-18|2016-03-23|060.00|1||R|012
104116001|PRODUCT|512|RAMP||2016-03-18|2016-03-23|060.00|1||R|012
104116001|PRODUCT|514|RAMP||2016-03-18|2016-03-23|060.00|1||R|012
104116001|PRODUCT|515|RAMP||2016-03-18|2016-03-23|060.00|1||R|012
在上面,我想用相同的方式替换所有|511|
- -而 这里最主要的是我不想替换- (我希望它们是相同的)。|211|
|512|
|212|
|514|
|214|
515
215
我使用了你提到的命令:
:map <leader>fq :%s/a/b/ge <Bar> %s/c/d/ge <Bar> %s/e/f/ge<CR>
但这对我的情况不起作用,非常感谢任何帮助!
答案1
您需要的是一个以 51 开头的正则表达式,其第三个字符可以是 1、2 或 4 中的任意一个。然后,您要以这种方式替换与正则表达式匹配的字符串:前两个字符为 21,第三个字符应为与正则表达式指定的第 3 个字符匹配的任何字符(即:无变化)。
%s/51\([124]\)/21\1/g
这里 [124] 表示 1、2 或 4 中的任意一个,而 \([124]\) 表示“让我们记住与 [124] 匹配的字符”。在替换字符串中,\1 表示“我们记住的第一个子字符串”(更具体地说:与第一个 \(\) 对之间的正则表达式部分匹配的子字符串)。