VIM:正则表达式 \zs \ze 问题
我试图删除从第二个字符到最后一个 .word\
模式的所有文本(也删除点),但之前可能没有 \
点。如果点之前有 \
,则删除直到之前的 .word\
模式。
我创建了这个简单的正则表达式:^\w\zs.*[^\]\.\ze\w\+\\\s.*$
但这不起作用
我做错了什么?
如果我不想删除直到最后一个 .word\
但直到第二个 .word\
模式,那么代码是什么?
数据:nnoremenu <静音> 97.330.10 &Sort.Reverse\ 字符.Reverse\ 字符\ in\ Line\ Hor\ -[A]
nnoremenu <静音> 97.330.11 &Sort.Reverse\ Characters.Reverse\ Characters\ in\ Line\ Hor\ Reverse\ -[A]
必须是:n 反向\字符\ in\ Line\ Hor\ -[A]
n 反向\字符\ in\行\水平\反向\ -[A]
I'm trying to delete all text in lines from the 2nd character till the last .word\
pattern (deleting also the dot), but there may not be a \
before the dot. If there is a \
before the dot then delete till the previous .word\
pattern.
I created this simple regex:^\w\zs.*[^\]\.\ze\w\+\\\s.*$
but this doesn't work
What did I wrong?
What would be the code if I don't want to delete till the last .word\
but till the 2nd .word\
pattern?
data: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\
must be: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\
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该使用:
请注意,最后的
\s
意味着最后一个反斜杠后面需要一个空格。\@ 帮助器的意思是:后向否定断言(参见
:help /\@)。
另请注意,最后的
.*$
是无用的。You should use:
Note that the final
\s
means that you require a space after the last backslash.The
\@<!
helper means: lookbehind negative assertion (see:help /\@<!
).Also note that the final
.*$
is useless.