匹配字符后面的任何单词 (Vim)

Matching any word behind a character (Vim)

现在我有这个:

/\w\+\(->\)\@=

匹配紧跟在->

后面的单词
matchedWord->

如何更改正则表达式,使其匹配(左侧)-> 后面的任何单词,无论是否有 space 或其他字符?

示例:

matchedWord = ->

matchedWord = (x) ->

您可以使用 \s* 来匹配 0 个或多个空白字符。

.*?\(->\)\@=

你可以简单地使用这个。.*? 将匹配任何直到 ->

就看你对后面的理解了 ->

如果这意味着之后那么你想试试

->\s*\zs\w\+

表达式首先搜索文字 ->,然后搜索任意数量 (*) 的空格 (\s)。接下来的 \zs 然后告诉 vim 实际开始比赛。 \w\+ 匹配一个词。

根据您的编辑,我假设您的意思是 之后意味着 之前,所以您想尝试

 \w\+\ze\s*->

和上面的逻辑几乎一样,但是我用\ze(结束匹配)而不是\zs

编辑 因此,您阐明了要匹配一行中的第一个单词。在那种情况下,你想要

\w\+\ze.*->