我正在尝试删除第2个字符到最后一个.word\
模式的行中的所有文本(也删除点),但在点之前可能没有\
。如果点之前有\
,则删除直到上一个.word\
模式。
我创造了这个简单的正则表达式:
^\w\zs.*[^\]\.\ze\w\+\\\s.*$
但这不起作用
我错了什么?
如果我不想删除到最后.word\
但直到第二个.word\
模式,那么代码是什么?
数据:
nnoremenu <silent> 97.330.10 &Sort.Reverse\ Characters.Reverse\ Characters\ in\ Line\ Hor\ -[A]<Tab>sihT\ si\ ym\ txet\.\
nnoremenu <silent> 97.330.11 &Sort.Reverse\ Characters.Reverse\ Characters\ in\ Line\ Hor\ Reverse\ -[A]<Tab>\.txet\ ym\ si\ sihT\
必须是:
n Reverse\ Characters\ in\ Line\ Hor\ -[A]<Tab>sihT\ si\ ym\ txet\.\
n Reverse\ Characters\ in\ Line\ Hor\ Reverse\ -[A]<Tab>\.txet\ ym\ si\ sihT\
答案 0 :(得分:2)
您应该使用:
:%s/^\w\zs.*\\\@<!\.\ze\w\+\\\s
请注意,最后的\s
表示在最后一个反斜杠后需要一个空格。
\@<!
帮助器意味着:lookbehind否定断言(见:help /\@<!
)。
另请注意,最终的.*$
无用。