Regex:获取CPP函数的单独参数和参数类型(c#)

Regex:获取CPP函数的单独参数和参数类型(c#),c#,c++,regex,C#,C++,Regex,我不太懂正则表达式,如何得到一个变量和一个变量的类型 示例源文本: func (int arg1, float *arg2, float *arg3) func2 (const char * name, int arg1, int arg2, int arg3, void * mem) 示例正则表达式 (\\(.*?)\\) -所有变量一次完成,但如何分别获取它们 \\((.*?),(.*?),(.*?)\\) int arg1float*arg2float*arg3,但可能有3个以上的

我不太懂正则表达式,如何得到一个变量和一个变量的类型

示例源文本:

func (int arg1, float *arg2, float *arg3)
func2 (const char * name, int arg1, int arg2, int arg3, void * mem)
示例正则表达式

(\\(.*?)\\) 
-所有变量一次完成,但如何分别获取它们

\\((.*?),(.*?),(.*?)\\)

int arg1
float*arg2
float*arg3
,但可能有3个以上的选项。。。我需要分别获取类型和参数。

您应该为自己获取一份Antlr的副本:

如果您试图解析C/C++头文件,那么它不仅仅是函数声明。特别是如果是C++,

Antlr对于您所讨论的那种部分解析和转换来说也是一个很好的工具。除此之外,你还可以免费获得一份工作,这可能足以满足你的需要(但我不会指望)

也要买Terrance Parr的书:


如果您坚持使用regex,并且假设您的函数签名不会变得非常复杂,那么您可以针对所有var_类型的var对进行循环,如下所示
>(S//(**)(\s+),//] < /> >/p>c和C++语法要比正则表达式解析得复杂得多。考虑:
void f(void(*g)(int,int))
(一个以函数指针作为参数的函数)。为什么不像你已经在做的那样抓取所有变量,稍后用逗号分割呢?我总是有“float*name”、“int name”、“void*name”等