2

我有一个包含很多枚举、typedef 和函数原型的 C 头文件。我想使用 Python regex (re) 提取这些数据。我真的需要语法方面的帮助,因为我似乎每次学习时都会忘记它。

ENUMS
-----
enum
{
(tab character)(stuff to be extracted - multiple lines)
};

TYPES
-----
typedef struct (extract1) (extract2)


FUNCTIONS
---------
(return type)
(name)
(
(tab character)(arguments - multiple lines)
);

如果有人能指出我正确的方向,我将不胜感激。

4

1 回答 1

4

我想像这样的东西是你所追求的?

>>> re.findall('enum\s*{\s*([^}]*)};', 'enum {A,B,C};')
['A,B,C']
>>> re.findall("typedef\s+struct\s+(\w+)\s+(\w+);", "typedef struct blah blah;")
[('blah', 'blah')]

当然,语法有很多变化,而且函数要复杂得多,所以我把这些留给你,坦率地说,这些正则表达式已经足够脆弱和不够优雅了。我会敦促您使用实际的解析器,除非这只是一个一次性项目,其中健壮性完全不重要并且您可以确定输入的格式。

于 2012-06-04T04:40:52.257 回答