【发布时间】:2015-10-21 15:37:30
【问题描述】:
我正在尝试使用正则表达式将函数定义中的参数提取到数组中。例如
func(a) -> ['a']
func(a,b) -> ['a','b']
func(a, b) -> ['a','b']
下面的正则表达式正确匹配参数块
/\((?:(\w+),?\s*)+\)/
但是,只返回最后一个匹配的捕获组,即结果是:
func(a) -> ['a']
func(a,b) -> ['b']
func(a,b,c) -> ['c']
这似乎是捕获部分重复单元的普遍有用的模式。有什么方法可以正确达到预期的结果吗?
我保存的正则表达式会话可以找到here
【问题讨论】:
-
什么语言?该语言是否有反射 API?为什么不在正则表达式中包含
func部分? -
JS有2个迹象:1)正则表达式和2)使用的正则表达式。
-
它没有捕获整个模式的原因是因为您使用的是
(?:),它被称为非捕获组,当可以使用(?<=\()(.*)(?=\))甚至@ 987654328@
标签: javascript regex