我有一个包含大量枚举,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)
);
如果有人能指出我正确的方向,我将不胜感激。
答案 0 :(得分:3)
我想像你这样的东西是什么?
>>> 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')]
语法当然有很多变化,而且功能要复杂得多,所以我会留给你的,因为坦白说这些正则表达式已经足够脆弱和不够优雅了。我建议你使用一个实际的解析器,除非这只是一个一次性的项目,其中健壮性是完全不重要的,你可以确定输入的格式。