正则表达式 怎么 匹配一个 完整的函数
正则表达式 如何 匹配一个 完整的函数
比如下面这段代码,如果我用:
Regex r = new Regex(@"main\(.*\)[\s\S]*?\{[\s\S]*;[\s\S]*}");//
MatchCollection mc = r.Matches(file_str);
foreach (Match m in mc)
{
MessageBox.Show(m.Groups[0].Value.ToString());
}
就会匹配到下一个函数的}
我想要的是匹配 main(){} 这个函数。。
------解决方案--------------------
先找到main(){的最后字符位置,标记为left_flag_index,再运行下面代码
比如下面这段代码,如果我用:
Regex r = new Regex(@"main\(.*\)[\s\S]*?\{[\s\S]*;[\s\S]*}");//
MatchCollection mc = r.Matches(file_str);
foreach (Match m in mc)
{
MessageBox.Show(m.Groups[0].Value.ToString());
}
就会匹配到下一个函数的}
我想要的是匹配 main(){} 这个函数。。
main()
{
int arry[5] = {23,1,21,4,19};
int i,j,k;
void quiksort(int a[],int low,int high);
quiksort(arry,0,4);
for(i=0;i<5;i++)
{
printf("%d ",arry[i]);
}
printf("\n");
}
void quiksort(int a[],int low,int high)
{
int i = low;
int j = high;
int temp = a[i];
if( low < high)
{
while(i < j)
{
while((a[j] >= temp) && (i < j))
{
j--;
}
a[i] = a[j];
while((a[i] <= temp) && (i < j))
{
i++;
}
a[j]= a[i];
}
a[i] = temp;
quiksort(a,low,i-1);
quiksort(a,j+1,high);
}
else
{
return;
}
}
------解决方案--------------------
先找到main(){的最后字符位置,标记为left_flag_index,再运行下面代码
for (i = left_flag_index; i < file_str.Length; i++)
{
if (file_str[i] == '{' && flag == false)
{
flag = true;
}
else if (file_str[i] == '}' && flag == true)
{
flag = false;
}
else if (file_str[i] == '}' && flag == false)