我有一个包含多条(1000 多条)记录的文件,例如:
lbc3.*'
ssa2.*'
lie1.*'
sld0.*'
ssdasd.*'
我可以通过以下方式找到它们:
/s[w|l].*[0-9].*$
我想要做的是将找到的每个模式的最后部分替换为 \.*'
我做不到:%s//s[w|l].*[0-9].*$/\\\\\.\*'
因为它将替换所有字符串,而我需要的只是替换它的末尾
。'
到
\.'
所以文件输出如下:
lbc3\\.*'
ssa2\\.*'
lie1\\.*'
sld0\\.*'
ssdasd\\.*'
Thanks.
一般来说,解决方案是使用capture. Put \(
...\)
围绕正则表达式中与您要保留的内容相匹配的部分,然后使用\1
在替换字符串中包含与正则表达式的该部分匹配的任何内容:
s/\(s[w|l].*[0-9].*\)\.\*'$/\1\\.*'/
由于您实际上只是在两个没有更改的字符串之间插入反斜杠,因此您可以使用第二组括号和\2
对于第二个:
s/\(s[w|l].*[0-9].*\)\(\.\*'\)$/\1\\\2/
或者,您可以使用\zs
and \ze
仅分隔要替换的字符串部分:
s/s[w|l].*p0-9].*\zs\ze\*\'$/\\/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)