Подтвердить что ты не робот

Vim положительное регулярное выражение

Я до сих пор не так привык к синтаксису regex vim. У меня есть этот код:

rename_column :keywords, :textline_two_id_4, :textline_two_id_4

Я хотел бы сопоставить последний id с положительным взглядом в синтаксисе regex VIMs.

Как вы это сделаете?

\[email protected]=_\d$

Это не работает.

Этот синтаксис perl работает:

id(?=_\d$)

Изменить - ответ:

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

Может кто-нибудь объяснить синтаксис?

4b9b3361

Ответ 1

Если вы проверите vim help, вам нечего объяснять: (: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$