我有一个包含多个(1000+)记录的文件,如:
lbc3.*'
ssa2.*'
lie1.*'
sld0.*'
ssdasd.*'
我可以通过以下方式找到它们:
/s[w|l].*[0-9].*$
我想要做的是用\。*'
替换每个模式的最后部分。我无法:%s//s[w|l].*[0-9].*$/\\\\\.\*'
,因为它会替换所有字符串,而我需要的只是替换它的结尾
'
至
\ '
所以文件输出是llike:
lbc3\\.*'
ssa2\\.*'
lie1\\.*'
sld0\\.*'
ssdasd\\.*'
感谢。
答案 0 :(得分:1)
通常,解决方案是使用捕获。将\(
... \)
放在与您要保留的正则表达式匹配的部分周围,并使用\1
包含替换字符串中正则表达式的那部分匹配:< / p>
s/\(s[w|l].*[0-9].*\)\.\*'$/\1\\.*'/
由于你真的只是在两个你没有改变的字符串之间插入反斜杠,你可以使用第二组parens和\2
作为第二组:
s/\(s[w|l].*[0-9].*\)\(\.\*'\)$/\1\\\2/
或者,您可以使用\zs
和\ze
来分隔您要替换的字符串部分:
s/s[w|l].*p0-9].*\zs\ze\*\'$/\\/