首页 > 解决方案 > 使用 Python 和正则表达式删除数组初始化代码

问题描述

我有一个自动生成的 .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*\};

这个正则表达式只会找到 variable_1、variable_2、variable_5 和 variable_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 中实现这一点?

标签: pythonregex

解决方案


您没有检查数组内的空格。尝试:

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


推荐阅读