匹配字符后面的任何单词 (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.*->
现在我有这个:
/\w\+\(->\)\@=
匹配紧跟在->
matchedWord->
如何更改正则表达式,使其匹配(左侧)->
后面的任何单词,无论是否有 space 或其他字符?
示例:
matchedWord = ->
matchedWord = (x) ->
您可以使用 \s*
来匹配 0 个或多个空白字符。
.*?\(->\)\@=
你可以简单地使用这个。.*?
将匹配任何直到 ->
。
就看你对后面的理解了 ->
如果这意味着在之后那么你想试试
->\s*\zs\w\+
表达式首先搜索文字 ->
,然后搜索任意数量 (*
) 的空格 (\s
)。接下来的 \zs
然后告诉 vim 实际开始比赛。 \w\+
匹配一个词。
根据您的编辑,我假设您的意思是 在 之后意味着 在 之前,所以您想尝试
\w\+\ze\s*->
和上面的逻辑几乎一样,但是我用\ze
(结束匹配)而不是\zs
。
编辑 因此,您阐明了要匹配一行中的第一个单词。在那种情况下,你想要
\w\+\ze.*->