使用Python和正则表达式删除数组初始化代码

时间:2019-02-05 18:55:39

标签: python regex

我有一个自动生成的.h文件。在此.h文件中,存在以以下方式初始化的数组。

char variable_1[1] = { 0 };
char variable_2[16] = 
  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
char variable_3[128] = 
  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,0,0,0,0,0,0,0,0,0};


char variable_4[63] = 
  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
char variable_5[1] = { 0 };
char variable_6[32] = 
  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

我在Python中使用以下正则表达式:

^char\s+variable_\w+\[\w*\]\s*=\s*\{\s*[0,]*\s*\};

此正则表达式将仅找到变量_1,变量_2,变量_5和变量_6。但是,我需要找到这些数组的所有实例,并删除初始化并保留数组名称。

char variable_1[1];
char variable_2[16];
char variable_3[128];
char variable_4[63];
char variable_5[1];
char variable_6[32];

有没有办法在Python中完成此任务?

1 个答案:

答案 0 :(得分:0)

您不检查数组内部的空格。试试:

^char\s+variable_\w+\[\w*\]\s*=\s*\{\s*[0,\s]*\s*\};