Regex 使用正则表达式Vim将特定位置的字符替换为另一个字符
还是个正则表达式新手,但我还在学习。我想做的是在这里用Vim和正则表达式替换粗体的数字“1”。但问题是,它不仅要为这条线这样做,而且要为这一位置上的每一条线这样做。换句话说,这个“1”正好在我平面文件的第29个空格。我想把它改成“2”。谁能帮我一把吗? 先谢谢你 2017033112xxxxxxxx1942055212007Regex 使用正则表达式Vim将特定位置的字符替换为另一个字符,regex,vim,Regex,Vim,还是个正则表达式新手,但我还在学习。我想做的是在这里用Vim和正则表达式替换粗体的数字“1”。但问题是,它不仅要为这条线这样做,而且要为这一位置上的每一条线这样做。换句话说,这个“1”正好在我平面文件的第29个空格。我想把它改成“2”。谁能帮我一把吗? 先谢谢你 2017033112xxxxxxxx1942055212007 %s/^\(.\{28}\)1/\12/ 这将保留每行的前28个字符,并将第29位的“1”替换为“2” %s/\%29c[0-9]/2/g 这将保留每行的前28个字符,
%s/^\(.\{28}\)1/\12/
这将保留每行的前28个字符,并将第29位的“1”替换为“2”
%s/\%29c[0-9]/2/g
这将保留每行的前28个字符,并将第29位的“1”替换为“2”
%s/\%29c[0-9]/2/g
它将在第29列中找到任何数字(从0到9),并将其替换为2
它将在第29列中找到任何数字(从0到9),并将其替换为2。使用match start
\zs
将第29位的1
更改为2
%s/^.\{28\}\zs1/2
之前
123456789012345678901234567890123
2017033112xxxxxxxxx19420525212007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525212005
之后
123456789012345678901234567890123
2017033112xxxxxxxxx19420525222007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525222005
使用匹配开始
\zs
%s/^.\{28\}\zs1/2
之前
123456789012345678901234567890123
2017033112xxxxxxxxx19420525212007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525212005
之后
123456789012345678901234567890123
2017033112xxxxxxxxx19420525222007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525222005
很抱歉,@Rahul,我看不到你的答复。@Rahul我只能看到“像这样?”点击它进行跟踪。很抱歉,@Rahul,我看不到你的答复。@Rahul我只能看到“像这样?”点击它进行跟踪。这太棒了。谢谢你,克里斯!我现在可以看到我在哪里,它基本上逃避了所有的事情,直到第28个角色。这太棒了。谢谢你,克里斯!现在,我可以看到我在哪里,它基本上逃避了第28个角色之前的一切。谢谢Jose。这也很酷。它适用于多个字符的字符串吗?如果用一个匹配多个字符的表达式替换[0-9]正则表达式,那么这也应该适用。谢谢。这也很酷。它适用于多个字符的字符串吗?如果用一个匹配多个字符的表达式替换[0-9]正则表达式,那么它也应该适用。