52

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

rename_column :keywords, :textline_two_id_4, :textline_two_id_4

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

これをどのように行いますか?

\id@=_\d$

これは動作しません。

この perl 構文は動作します:

id(?=_\d$)

編集 - 答え:

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

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

4

1 に答える 1

71

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$
于 2013-08-22T22:34:08.373 に答える