正则表达式提取' name' C

时间:2017-01-15 14:54:09

标签: c regex grep pcre

我想在C文件中找到所有extern variable/function声明的 名称 部分。例如,请考虑以下示例输入:

extern int var_a, var_b, (*ptr), (var);  
extern int a;  
extern char var_c[10], var_d[19][20];  
extern long var_e,_var_f[12];  
extern char * func_a(int a, char *b, long* c, ...);  
extern char * func_b(int a, char *b, void fp(void *, void *));  

regex应输出如下 - 可以有一个尾随 - , ; ) (

var_a, var_b, ptr) var)
a;
var_c[ var_d[
var_e, _var_f[
func_a(
func_b(

为此我可以写下面:

> grep -ri '^ *extern.*?;' file_name.c | grep -Po "\b\w+([[(;]|,)"  

第一个grep捕获所有具有extern声明的行。但是,我无法从这些过滤的variable/function声明中提取extern名称。

如何在不编写解析器的情况下编写可以执行此操作的regex

Linkregex

0 个答案:

没有答案
相关问题