# coding=utf-8

import re

# 匹配函数,包含函数体

function_return_type = r'''

(\s*) #匹配所有的空白字符

(

(const)?(volatile)?(static)?\s*(inline)?\s*(extern)?\s*

(

(VOID)|(void)|(enum)|

((unsigned)?(signed)?(long)?\s*(int)|(char)|(float)|(short)|(long)|(double))|

(bool)|(struct\s*\w+)|(union\s*\w+)|(wait_queue_t)|(wait_queue_head_t)

)

\s*(fastcall)?

) #匹配函数返回类型

(\s*(\*)?\s*) #识别有无指针类型*,以及空白字符

(\w+) #识别函数名称

((\s*)(\()(\n)?) #识别函数开始小括号

((\s*)?(const)?(volatile)?(\s*)? #参数前是否有const、volatile

(

(static)?\s*(inline)?\s*(extern)?\s*

(

(VOID)|(void)|(enum)|

((unsigned)?(signed)?(long)?\s*\s*(int)|(char)|(float)|(short)|(long)|(double))|

(bool)|(struct\s*\w+)|(union\s*\w+)|(wait_queue_t)|(wait_queue_head_t)

)

\s*(fastcall)?

) #参数类型

(\s*)(\*)?(\s*)?(restrict)?(\s*)?(\w+)(\s*)?(\,)?(\n)?(.*)?)*

((\s*)(\))(\n)?) #函数结束小括号

((\s*)(\{)(.|\n)*(\s*)(\})(\s*))#函数体

'''

if __name__ == "__main__":

code = """

! static inline void wake_up_page(struct page *page,

! int bit)

{

__wake_up_bit(page_waitqueue(page), &page->flags, bit);

}

"""

# print(type(code)) #输出类型

# code1 = code.replace('!', '&') #替换掉!

# code = re.sub('!', '?', code) #替换掉!

# print(code1) #输出替换后的字符串

pat1 = re.compile(function_return_type, re.X)

ret = pat1.search(code) #包含

# ret = pat1.match(code) #完全匹配

if None == ret:

print('不包含C函数定义!')

else:

print("包含C函数定义!")

python正则表达式提取c语言中的函数,Python正则表达式匹配C语言函数相关推荐

  1. 在python中,用正则表达式提取多层括号中最外层括号包含的内容

    提取多层括号中最外层括号包含的内容有几种方式,那么用正则表达式该怎么实现呢? 在python中,用正则表达式提取多层括号中最外层括号包含的内容 比如有一个字符串 : 学习python中有什么不懂的地方 ...

  2. Python编程语言学习:python语言中快速查询python自带模块函数的用法及其属性方法、如何查询某个函数关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略

    Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法.如何查询某个函数&关键词的用法.输出一个类或者实例化对象的所有属性和方法名之详细攻略 ...

  3. 举个栗子~Tableau 技巧(241):用 Python 脚本提取文本内容中的关键词

    经常有数据粉反馈:在处理文本内容的时候,是否有快速提取内容关键词的方法呢? 方法有的,可以试试 Python.这里,我们来分享:如何在 Tableau 中利用 Python 脚本从文本内容提取关键词. ...

  4. python - bs4提取XML/HTML中某个标签下的属性

    python - bs4提取XML/HTML中某个标签下的属性 一个例子就让你看明白.看完记得给博主点个赞噢. 我们要提取的xml原始文档来自以下网址: https://raw.githubuserc ...

  5. C语言中的带参宏和带参函数的区别

    C语言中的带参宏和带参函数的区别 (1) 带参函数中的形参是变量,因此有类型检查.而带参宏只是简单的字符串替换. (2) 从程序执行的过程来看,带参宏是在预处理阶段被预处理器处理的.而带参函数是在程序 ...

  6. Python办公自动化——提取pdf文件中表格并到Excel

    Python办公自动化--提取pdf文件中表格合并到Excel 需求描述 现有一 pdf 文件内容如下,文件中内容主要是表格形式的获奖名单,共158页.现要读取这些表格信息并保存到 excel 文件中 ...

  7. Python工具源码,Python批量提取PPT文件中的图片

    在办公场景当中,同样也有这样一个需求,那就是快速批量把PPT文件中的图片提取出来,毕竟一个个点击另存为太过于繁琐,以及耗费时间,前面本渣渣分享过如何应用Python批量提取PDF文件中的图片,而这一篇 ...

  8. c语言中存贮班级学生的变量,C语言----变量教案.docx

    C语言----变量教案 课 题 2.2 常量和变量----变量 课型 理实一体化 授课班级 高二计算机(升学班) 课时 2 教学目标 复习巩固C语言中常量的应用: 掌握C语言中变量的命名规则及应用. ...

  9. Python批量提取Excel文件中文本框组件里的文本

    开学第一课:拜托,一定不要这样问Python问题 中国大学MOOC"Python程序设计基础"免费学习地址 2020年秋季学期Python教材推荐与选用参考 推荐图书: <P ...

  10. python正则表达式提取电话号码_Python学习笔模式匹配与正则表达式之电话号码和Email地址提取程序...

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

最新文章

  1. ABAP 使用DYNP_VALUES_READ来获取屏幕字段值
  2. Python-练习7
  3. Linux下ejabberd安装配置
  4. linux 多个定时器,timer: 一个Linux下的超级精简的多重定时器:可实现成千上万个定时任务,定时精度可达纳秒级别,且同一时间点可添加不同的任务!适用于云后台服务和嵌入式等各种环境。...
  5. ASIO 腾空出世 (那些年我们追过的网络库.PartII)
  6. python java混合编程_详解java调用python的几种用法(看这篇就够了)
  7. in、at和on作为方位介词_21
  8. mysql group by cube_SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE
  9. Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
  10. 语音识别免费的api
  11. 杭电多校HDU 6579 Operation (线性基 区间最大)题解
  12. slickedit 设置
  13. 西门子S7-200的PLC,CPU224XP的模拟量接线怎样接
  14. linux主机名hostname老是被更改为broad原理分析和恢复
  15. 美团和饿了么分别有什么优势和劣势?
  16. 使用计算机用眼卫生,电脑族日常保护眼睛小常识
  17. linux 连接远程3389,Linux下使用rdesktop连接Windows的3389
  18. python plt绘制多子图
  19. 二、Linux镜像软件的安装
  20. Pytorch实战:用经典网络实现猫狗大战

热门文章

  1. 解压rar_【RAR安卓】RAR解压v5.91.build93去广告版,解压多种压缩包 与WinRAR完美兼容!...
  2. linux第五单元作业,第五单元《微型计算机系统》教案
  3. LeetCode(2) 两数相加递归解法,速度最快,内存消耗最小
  4. mysql 查询时间戳(TIMESTAMP)转成常用可读时间格式
  5. 让IE6支持min-width和max-width的方法
  6. php中正则表达式中的特殊符号
  7. 使用Java调用默认浏览器打开指定网址
  8. pcie总线频率和带宽_从1.0到6.0的飞跃之路,PCIe总线技术发展解析
  9. js实现登录表单验证
  10. gcms基峰有什么用_金鉴实验室 | 气相质谱(GCMS)