正则表达式选择行后

roo*_*oot 2 regex vim

我正在使用 vim 编辑文档 - 其中摘录是:

--

aaa bbb
ccc ddd
eee fff

--

ggg hhh
iii jjj
kkk lll

--
Run Code Online (Sandbox Code Playgroud)

我想选择带有“--”和新行的(两行)行之后的所有行。在这个例子中,我想选择“aaa bbb”和“ggg hhh”。在正则表达式中是否可以进行行级“后视”?

Ran*_*ris 5

Vim 有一个很好的特性,你可以在这里利用它。以下命令将匹配请求的两行(以搜索为例):

/--\n\n\zs.*
Run Code Online (Sandbox Code Playgroud)

说明:

  • / - 开始搜索
  • --\n\n - 我理解的问题的谓词
  • \zs - 告诉 vim 从这里开始真正的比赛并在此之前扔掉所有东西
  • .* - 任何字符。

\zs令牌允许你告诉VIM,该模式匹配实际开始,即使正则表达式作为一个整体必须匹配。有一个补充标记\ze告诉 vim 在哪里结束匹配。

虽然我已经使用搜索功能来展示这个功能,但这些标记可以在任何可以在 vim 中使用正则表达式的地方使用。

有关此功能的更多信息,请查看:help /\zs:help /\ze