由于工作需要,想实现用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函数定义!")