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

时间:2009-02-25 12:47:03

标签: c# regex variables declaration

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

int i,k = 10,l = 0

我想写一个像int \ s ^,??|(^,?)*的正则表达式* 但这也会接受 k = 10即(前面没有int) 基本上是想法 如果string以int开头 获取由

分隔的变量列表

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

4 个答案:

答案 0 :(得分:3)

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

(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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

试试这个:

 ^(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