我正在尝试使用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?)+\(.*\)
在我上面提到的两种情况中没有找到匹配。
请帮助我找出我犯错误的地方。谢谢。
已尝试派生正则表达式。
1条答案
按热度按时间wz3gfoph1#
您可以使用
([a-zA-Z_][\w_]*)\s+([a-zA-Z_][\w_]*)\s*\(.*\)
:关于初始正则表达式:
\s
会吞下\n
,所以没有必要将它们分开。但通常在返回类型和函数名之间可以有任意数量的空格符号。另一方面,您的初始正则表达式允许类似
int int func()
的内容,这并不理想。