我有一个正则表达式,我用它来匹配IDE(Sublime)中的用户函数。这匹配我想要的(函数名称本身),但它也匹配第一个括号。因此匹配如下:
此的 _myFunction( '内容');
注意开场的paran。
这是我的表达:
(?:[^\._])?([\w-]+)(?:[\(]){1}
如何排除开场paran的匹配?
作为一个额外的问题:我怎样才能成功不匹配字符串:function
,因为您可以期待function(
匹配(在JS中不好玩)。
感谢能够提供帮助的任何人。
答案 0 :(得分:2)
您可以使用(?=pattern)
:
零宽度正向前瞻断言。例如, “/ \ w +(?= \ t)/”匹配一个单词后跟一个标签,没有 包括$&。
中的标签
所以,如果你将开放的paren包裹在(?=)
而不是(?:)
答案 1 :(得分:1)
不幸的是,你不能真正使用正则表达式来解析任何无上下文语法,但希望这可以做得更好。它使用positive lookahead不包括匹配中的开头,但无论如何都要查找它:
(?:[^\._])?([\w-]+)(?=[\(])
如果你的IDE的正则表达式引擎支持负面的后观(在匹配之前子表达式不),你可以避免匹配字符串'function'或“function”:
(?!<['"])(?:[^\._])?([\w-]+)(?=[\(])