2012-06-04 41 views
1

我有一個C頭文件,裏面有很多枚舉,typedefs和函數原型。我想使用Python正則表達式(re)提取這些數據。我真的需要語法上的幫助,因爲我每次學習時都會忘記它。從Python頭文件中提取數據的Python正則表達式

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

到目前爲止,你對你的重要性有何看法? – Levon

+1

你看過h2py了嗎? –

+0

'regex = re.compile(「enum \ n {(。*)}」,re.DOTALL)'。我想我會在枚舉中獲得所有的字符,但是我得到了一切。 此外,這是用於Cython。 –

回答

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')] 

當然也有對語法的許多變化和功能要複雜得多,所以我會離開那些你,因爲坦率地說,這些正則表達式已經脆弱的,足夠的不雅。我會敦促你使用一個實際的解析器,除非這是一個一次性的項目,其中魯棒性完全不重要,你可以確定輸入的格式。

相關問題