Vim positive lookahead regex

I am still not so used to the vim regex syntax. I have this code:

rename_column :keywords, :textline_two_id_4, :textline_two_id_4

I would like to match the last id with a positive lookahead in VIMs regex syntax.

How would you do this?

\id@=_\d$

This does not work.

This perl syntax works:

id(?=_\d$)

Edit - the answer:

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

Can someone explain the syntax?


Solution 1:

If you check the vim help, there is not much to explain: (: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

This should match the last id:

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

save some back slashes with "very magic":

/\vid(_\d$)@=

actually, it looks more straightforward to use vim's \zs \ze:

id\ze_\d$