当前位置:  开发笔记 > 编程语言 > 正文

Vim中的多行正则表达式支持

如何解决《Vim中的多行正则表达式支持》经验,为你挑选了1个好方法。

我注意到跨多行匹配的标准正则表达式语法是使用/ s,如下所示:

This is\nsome text
/This.*text/s

例如,这在Perl中有效,但在Vim中似乎不支持.相反,我必须更加具体:

/This[^\r\n]*[\r\n]*text/

我找不到任何原因,为什么这应该是,所以我想我可能只是错过了vim帮助中的相关位.

任何人都可以通过某种方式确认这种行为吗?



1> Brian Carper..:

是的,Perl的//s修饰符不适用于Vim正则表达式.有关:h perl-patterns详细信息以及Vim和Perl正则表达式之间的其他差异列表,请参阅.

相反,你可以使用\_.,这意味着"匹配任何单个字符,包括换行符".它比你的有点短.见:h /\_..

/This\_.*text/


http://blog.vinceliu.com/2007/12/regular-expression-matching-more-than.html
很好 - 我的生活变得更轻松了.我一直在做(.| \n)*
`:h /\_ .`中的正斜杠有什么作用?我的意思是,我知道它有效,但为什么`:h /\_.`工作,而不是`:h\_.`?
@Eddified正斜杠(这是搜索的默认键)指定`\ _ .`的上下文,你可以读取:给我帮助*搜索表达式*`\ _.
@JIXiang要在foo bar \ n foo baz \ n foo`上进行延迟匹配,请尝试`/ foo \ _。\ {-} foo`
推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有