3

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

我正在尝试使用这种格式的参考链接从文本中提取数字列表

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

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

这是在一个很好的答案中提出的:

如何使用 Vim 提取正则表达式匹配

对另一个人,以下格式可能有效:

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

但是,"echo new"在我的情况下,调用时,列表是空的。

任何想法都会非常受欢迎!

4

2 回答 2

1

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

:let nextreflink=[] | %s/\(\d\+\)\zs/\=add(nextreflink,submatch(1))[1:0]/g
于 2012-09-13T13:19:19.253 回答
1

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

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

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

let next = max(refs) + 1

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

于 2012-09-13T14:04:38.240 回答