python - 在 python 中使用正则表达式解析 c 样式的嵌套结构
问题描述
我正在尝试使用 python 解析 c 结构。 https://github.com/fox-it/dissect.cstruct/blob/master/dissect/cstruct/cstruct.py#L371
正则表达式:
r'(#(?P<flags>(?:compile))\s+)?((?P<typedef>typedef)\s+)?(?P<type>[^\s]+)\s+(?P<name>[^\s]+)?(?P<fields>\s*\{[^}]+\}(?P<defs>\s+[^;\n]+)?)?\s*;'
它适用于简单结构,但不适用于嵌套结构。
工作正常:
typedef struct test {
char magic[4];
wchar wmagic[4];
uint8 a;
uint16 b;
uint32 c;
char string[];
wchar wstring[];
} test_;
失败:
typedef struct test {
char magic[4];
wchar wmagic[4];
uint8 a;
uint16 b;
uint32 c;
char string[];
wchar wstring[];
struct {
int a;
} item[20];
} test_;
在第一种情况下,它的 defs 具有值 test_,但在第二种情况下,defs 是项目。
解决方案
推荐阅读
- python - Pycharm 检查 .idea 是否有效
- inno-setup - 在 Inno 设置中运行 Sql server 脚本以使用 cmd 更新数据库
- python - 求解具有 7 个未知数的线性联立方程
- javascript - 在 do while 循环中重复调用函数
- html - 如果在将 div 插入 DOM 后更改其样式,为什么转换不起作用?
- c++ - 使用 clang 10 for Visual Studio 2019 编译时不调用覆盖删除
- android - 如何使用 ACTION_OPEN_DOCUMENT_TREE 提示内容管理器选择器直接在可选位置打开
- sql - 从带有连接的表中获取记录,其中连接中的记录不包含特定值
- c# - 设置为脱机工作时如何在 Outlook 中读取/写入联系人和事件 - C#
- java - Instagram 的“代码”和“重定向网址”是什么?