3

Stackoverflow の別の回答で ib が提供する手法を適用しようとしましたが、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で囲むことによってキャプチャする必要があります。\(...\)submatch(1)最初のキャプチャを指します。\d\+また、 9つを超える参照をサポートするには、複数の数値を一致させる必要があります。

: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 に答える