regex 使用python匹配C函数调用的正则表达式

juud5qan  于 2023-03-13  发布在  Python
关注(0)|答案(1)|浏览(66)

我正在尝试使用Python开发一个C语言的调用图实用程序。
我想匹配gcc风格(函数名从第0列开始)的C函数声明,如

int
grant_admin_privileges ();

我可以推导出这个正则表达式:

([\w_]+\n?\s?)*\(.*\)

但它只匹配

grant_admin_privileges ();

但如果我用

int grant_admin_privileges ()

样式说明
正则表达式匹配项

int grant_admin_privileges ();

正确地。
注意:如果我使用

([\w_]+\n?\s?)+\(.*\)

在我上面提到的两种情况中没有找到匹配。
请帮助我找出我犯错误的地方。谢谢。
已尝试派生正则表达式。

wz3gfoph

wz3gfoph1#

您可以使用([a-zA-Z_][\w_]*)\s+([a-zA-Z_][\w_]*)\s*\(.*\)

  • 第一组包含函数的返回类型
  • 第二组-函数的名称,
  • 第三组-参数

关于初始正则表达式:\s会吞下\n,所以没有必要将它们分开。但通常在返回类型和函数名之间可以有任意数量的空格符号。
另一方面,您的初始正则表达式允许类似int int func()的内容,这并不理想。

相关问题