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$