现在我有这个:
/\w\+\(->\)\@=
匹配->
matchedWord->
如何更改该正则表达式,以便它匹配(左侧)->
后面的任何单词,无论是否有空格或其他字符?
示例:
matchedWord = ->
matchedWord = (x) ->
答案 0 :(得分:2)
取决于背后的理解 - >
如果这是之后的,那么你想尝试
->\s*\zs\w\+
表达式首先搜索文字->
,后跟任意数字(*
)的空格(\s
)。然后,以下\zs
告诉vim实际开始匹配。 \w\+
匹配一个字。
从您的编辑中,我认为你的意思是在之后意味着在前面,所以你想尝试
\w\+\ze\s*->
几乎与上述逻辑相同,但我使用\ze
(结束匹配)而不是\zs
。
编辑所以,您澄清了要匹配一行中的第一个单词。在这种情况下,你想要
\w\+\ze.*->
答案 1 :(得分:1)
您可以使用匹配0个或更多空白字符的\s*
。
答案 2 :(得分:1)
.*?\(->\)\@=
您可以使用此功能。.*?
将匹配->
之前的所有内容。