我还是不太习惯 vim 正则表达式语法。我有这个代码:
rename_column :keywords, :textline_two_id_4, :textline_two_id_4
我想将最后一个 id 与 VIM 正则表达式语法中的正向前瞻相匹配。
你会怎么做?
\id@=_\d$
这不起作用。
这个 perl 语法有效:
id(?=_\d$)
编辑 - 答案:
/id\(_\d$\)\@=
有人可以解释一下语法吗?
请您参考如下方法:
如果你查看 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$\)\@=
用“very magic”保存一些反斜杠:
/\vid(_\d$)@=
其实,使用vim的\zs\ze
看起来更直接:
id\ze_\d$