【问题标题】:Adding regex searches to list in Vim将正则表达式搜索添加到 Vim 中的列表
【发布时间】:2012-09-13 12:38:42
【问题描述】:

我一直在尝试将 ib 提供的技术应用到 stackoverflow 上的另一个答案中,但无法在 m 情况下工作。

我正在尝试从带有此格式参考链接的文本中提取数字列表

[1]:www.example.com    
[2]:www.example.2.com

提取数字后,我希望从列表中获取最大值,以便找到下一个要使用的合适数字。

这里有一个很好的答案建议:

How to extract regex matches using Vim

向其他人表示以下格式可能有效:

:let nextreflink=[] | %s/\d\zs/\=add(nextreflink,submatch(1))[1:0]/g  

但是,当调用"echo new" 时,在我的例子中,列表是空的。

非常欢迎任何想法!

【问题讨论】:

    标签: regex vim pattern-matching text-extraction


    【解决方案1】:

    以下内容明确匹配行首的“[N]”,因此更加严格。这类似于上面的答案,但它不会从参考文献中删除数字(我不太确定这是怎么回事)。

    let refs=[] | %s/^\[\zs\d\+\ze\]/\=add(refs, submatch(0))[-1]/g
    

    这使参考列表保持不变。然后你可以得到下一个可用的参考:

    let next = max(refs) + 1
    

    这不考虑跳过的数字。如果引用是[1, 2, 5],那么next 将是6

    【讨论】:

      【解决方案2】:

      您需要捕获\d匹配的号码,将其包含在\(...\)中; submatch(1) 指的是第一次捕获。此外,您可能希望匹配多个数字\d\+ 以支持超过九个引用。

      :let nextreflink=[] | %s/\(\d\+\)\zs/\=add(nextreflink,submatch(1))[1:0]/g
      

      【讨论】:

        猜你喜欢
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 2015-02-16
        • 1970-01-01
        • 2010-10-05
        • 2011-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多