2009-10-27 17 views
0

我读.c文件看出来它定义的函数,并计算每种功能的行数。 我的问题是,我无法查找跨越多个线索的函数名称/签名。 我有.c文件的功能名称的列表,我在.c文件与功能匹配这个列表的函数名,以进一步处理。python脚本在多行匹配的C函数签名

例如我的.c文件是:

1. int main(
2.   void 
3.   ) 

此处主签名跨越三行。

和我的功能列表:与多主要在.c文件

int main(void); 

我如何能匹配“INT主要(无效)”? 一旦功能匹配,我想开始计数线。

回答

0

如果有匹配的定义 “精确”,那么你可以使用正则表达式:

int\s+main\s*\(\s*void\s*\)\s*; 

其中\ S *表示零个或多个whitechars和\ S +一个或多个whitechars。

要使用多搜索中使用它,你可以将它定义成:

RE_MAIN = re.compile(r'int\s+main\s*\(\s*void\s*\)\s*;', re.MULTILINE | re.DOTALL) 

通过“正是”我的意思是,像

int main(); 

(无效略)不匹配函数定义

这样你可以寻找到功能开始,然后做简单的字符计数仪{和}记住忽略的意见和忽略字符和字符串常量