我想在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
?
Link到regex
。