python正则表达式获取C函数定义

由于工作需要,想实现用Python正则表达式识别输入内容是否包含C函数定义。

关于正则表达式https://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html,这篇文章介绍的很全面。

完整代码如下:

import re
rgl_exp1 = r'''
            (\s*)  
            ((VOID)|(void)|(char)|(short)|(int)|(float)|(long)|(double)) # 识别函数返回值类型
            (\s*(\*)?\s*)                                                # 识别返回值是否为指针类型以及中间是否包含空格
            (\w+)                                                        # 识别函数名
            ((\s*)(\()(\n)?)                                             # 函数开始小括号
            ((\s*)?(const)?(\s*)?                                        # 参数前是否有const
            ((void)|(char)|(short)|(int)|(float)|(long)|(double))        # 参数类型
            (\s*)(\*)?(\s*)?(restrict)?(\s*)?(\w+)(\s*)?(\,)?(\n)?(.*)?)*# 最后的*表示有多个参数
            ((\s*)(\))(\n)?)                                             # 函数结束小括号
            '''

if __name__ ==  "__main__":
    code = """
void FuncName(
    int    param1,
    char   param2, 
    int    *param3, 
    double *parma4
)
{
    printf("hello world!\n");
}
    """
    pat1 = re.compile(rgl_exp1,re.X)
    ret = pat1.match(code)
    if None == ret:
        print('不包含C函数定义!')
    else:
        print("包含C函数定义!")
    
        

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值