web-dev-qa-db-ja.com

Vimの肯定先読み正規表現

私はまだvim正規表現構文に慣れていません。私はこのコードを持っています:

rename_column :keywords, :textline_two_id_4, :textline_two_id_4

VIMの正規表現構文で最後のIDを正の先読みと一致させたいのですが。

どうしますか?

\id@=_\d$

これは動作しません。

このPerl構文は機能します:

id(?=_\d$)

編集-答え:

/id\(_\d$\)\@=

誰かが構文を説明できますか?

48
Hendrik

Vimのヘルプを確認しても、説明することはあまりありません:(:h \@=

\@=     Matches the preceding atom with zero width. {not in Vi}
        Like "(?=pattern)" in Perl.
        Example             matches
        foo\(bar\)\@=       "foo" in "foobar"
        foo\(bar\)\@=foo    nothing

これは最後のIDと一致する必要があります。

/id\(_\d$\)\@=

「非常に魔法」でいくつかのバックスラッシュを保存します。

/\vid(_\d$)@=

実際には、vimの\zs \zeを使用する方が簡単に見えます。

id\ze_\d$
62
Kent