我想写一个RegEx从变量声明语句中提取所有变量值及其名称。说我有用于c中变量声明和初始化的正则表达式#
INT I,K = 10,L = 0
我想写一个正则表达式的东西如int \ S ^,?|(^ ,?)* 但是这也将接受 ķ = 10,即(不INT在它之前) 基本思路是 如果字符串以整数,那么 获得通过分隔的变量列表,
我知道提取CSV值,但在这里我的字符串具有一定的初值为好。我该如何解决它?
我想写一个RegEx从变量声明语句中提取所有变量值及其名称。说我有用于c中变量声明和初始化的正则表达式#
INT I,K = 10,L = 0
我想写一个正则表达式的东西如int \ S ^,?|(^ ,?)* 但是这也将接受 ķ = 10,即(不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
左功课,除去空间和修复了最后的正则表达式
你可以建立起来,从[C#语法]正则表达式(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