【发布时间】:2011-05-12 18:14:23
【问题描述】:
好的,我已经阅读了tutorials,现在我的头太乱了,现在看不清楚了。
我正在尝试从函数签名中捕获参数及其类型信息。所以给出这样的签名:
function(/*string*/a,b,c)
我想要这样的零件:
type: string
param:a
param:b
param:c
这也可以:
type: string
param:a
type: null (or whitespace)
param:b
type: null (or whitespace)
param:c
所以我想出了这个正则表达式,它犯了重复捕获的常见错误(我已经打开了显式捕获):
function\(((\/\*(?<type>[a-zA-Z]+)\*\/)?(?<param>[0-9a-zA-Z_$]+),?)*\)
问题是,我无法纠正错误。 :(。请帮忙!
【问题讨论】:
-
您使用什么语言?如果这是一个 .Net 模式,那么你很幸运。否则,可能一步都不可能。
-
我也希望在不使用 .Net 的情况下解决它,但是是的,我最终使用的是 .Net。另外,我查看了 Captures 集合,但我没有可靠的方法将捕获与组相关联(或者我忽略了什么?)。
-
查看发布的答案。
Match.Captures更容易找到但不是很有用,你通常需要Group.Captures(当然我猜这里)。 -
@Kobi - 我将把它打开一段时间,以防有人可以通过纯正则表达式解决它。否则,您的解决方案是我最接近的解决方案。我试过了,它也有效;但是,我们知道它会的,不是吗?