我注意到跨多行匹配的标准正则表达式语法是使用/ s,如下所示:
This is\nsome text /This.*text/s
例如,这在Perl中有效,但在Vim中似乎不支持.相反,我必须更加具体:
/This[^\r\n]*[\r\n]*text/
我找不到任何原因,为什么这应该是,所以我想我可能只是错过了vim帮助中的相关位.
任何人都可以通过某种方式确认这种行为吗?
是的,Perl的//s
修饰符不适用于Vim正则表达式.有关:h perl-patterns
详细信息以及Vim和Perl正则表达式之间的其他差异列表,请参阅.
相反,你可以使用\_.
,这意味着"匹配任何单个字符,包括换行符".它比你的有点短.见:h /\_.
.
/This\_.*text/