如何防止以下正则表达式匹配两个()s之间的东西?

时间:2015-02-06 15:18:54

标签: regex vim

这个正则表达式:

\v\(.*\)\ze\s\-\>

匹配此项(包括括号):

functionDefinition = (matchedArgs) ->

一切都好。问题出现在这里:

$(window).on "scroll", (e) ->

(char)不是单独匹配,而是一起匹配,如下所示:

$<<(window).on "scroll", (e)>> ->

如何修复正则表达式以使它们单独匹配?像这样:

$<<(window)>>.on "scroll", <<(e)>> ->

1 个答案:

答案 0 :(得分:3)

我会将其更改为以下内容:

\v\(.{-}\)\ze\W

它在括号之间进行非贪婪匹配.{-},后跟任何非字母字符\W


<强>更新

我以为你想要匹配第一对parens。改为使用这个:

\v\([^)]*\)\ze\s-\>

更新2:有关说明

当然:\v意味着非常神奇,所以它避免逃脱许多特殊字符,如括号,花括号等。此\([^)]*\)匹配非贪婪模式下括号中的某些内容。 \ze\s-\>是一个零宽度断言,其内容跟随但没有匹配。