【问题标题】:non-greedy multiline search in vimvim中的非贪婪多行搜索
【发布时间】:2013-11-01 18:35:56
【问题描述】:

我正在尝试搜索 ruby​​ 文件并找到所有方法(在稍后自动替换它们之前)。 在 vim 中,我使用以下正则表达式:

/\vdef.*(\n.*){-}end

但是,即使我使用“{-}”,它也会选择整个文件的内容。

【问题讨论】:

  • 我不明白你想匹配什么。如果函数内部有if ... end 条件呢?
  • 是的,我稍后会相应地修改正则表达式(比如为另一个 def 或类似的东西添加积极的前瞻)。我现在需要的是非贪婪地搜索它的方法

标签: regex vim multiline non-greedy


【解决方案1】:

使用\_. 将换行符包含在常见的. 中。

/\vdef\_.{-}end

【讨论】:

    【解决方案2】:

    在我的 Vim 版本中,您需要转义 {,以及使用 \_.,正如其他答案所说:

    /def\_.\{-}end
    

    【讨论】:

      【解决方案3】:

      尝试以下正则表达式。

      /\vdef(\n|.){-}end
      

      .* 是你案件的罪魁祸首

      【讨论】:

      • 您可以在def 之后删除.*\vdef(\n|.){-}end 也可以。
      猜你喜欢
      • 1970-01-01
      • 2015-02-11
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 2012-03-10
      相关资源
      最近更新 更多