首页 > 解决方案 > 在 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 是项目。

标签: pythonregex

解决方案


推荐阅读