用于c#中的变量声明和初始化的正则表达式

我想编写一个RegEx来从变量声明语句中提取所有变量值及其名称。 说我有

int i,k = 10,l = 0

我想写一个正则表达式像int \ s ^,?|(^,?)*但这也接受k = 10 ie(没有int在它之前)基本上想法是如果字符串以int开头然后获取变量列表分离通过,

我知道要提取csv值,但这里我的字符串也有一些初始值。 我该如何解决?

开始考虑定义的结构,比方说,

(a line can start with some spaces) followed by, (Type) followed by (at least one space) (variable_1) (optionally (comma // next var | '='number // initialization ) ...` 

然后尝试转换每个组:

 ^ \s* \w+ \s+ \w+ ? (',' | '=' \d+ ) ... line some type at least var optionally more or init some start spaces (some chars) one space (some chars) vars val digits 

留下作为删除空格和修复最终正则表达式的作业。

以下是您可以使用的一些有用信息

http://compsci.ca/v3/viewtopic.php?t=6712

您可以从[C#Grammar]( http://msdn.microsoft.com/en-us/library/aa664812 ( VS.71).aspx)构建正则表达式。 但构建解析器肯定会更好。

试试这个:

  ^(int|[sS]tring)\s+\w+\s*(=\s*[^,]+)?(,\s*\w+\s*(=\s*[^,]+)?)*$ 

它会匹配您的示例代码

 int i,k = 10,l=0 

并对您可能使用或未使用的语言做出一些假设,它也会匹配:

 int i, j, k=10, l=0 string i=23, j, k=10, l=0