我注意到跨多行匹配的标准正则表达式语法是使用/s,如下所示:
This is\nsome text
/This.*text/s
例如,这在Perl中可以工作,但在Vim中似乎不受支持。相反,我必须说得更具体一些:
/This[^\r\n]*[\r\n]*text/
我找不到任何理由来解释为什么会这样,所以我想我可能只是错过了vim帮助中的相关部分。
有人能以这种或那种方式证实这种行为吗?
发布于 2009-04-24 01:28:04
是的,Perl的//s
修饰符在Vim正则表达式上不可用。有关:h perl-patterns
和Perl正则表达式之间的其他差异的详细信息和列表,请参阅Vim。
相反,您可以使用\_.
,这意味着“匹配包括换行符在内的任何单个字符”。它比你拥有的要短一点。参见:h /\_.
。
/This\_.*text/
https://stackoverflow.com/questions/784176
复制相似问题