我目前正在编写一个 Python 脚本,它将搜索整个 .c 或 .h 文件并找到所有函数定义,这样我就可以进行一些细微的编辑。要查找我尝试使用正则表达式的所有函数定义。
我目前拥有的是:
"r'\w+?\s+?\w+?\s*?\(.*?\)[\n\s]*?{"
这个逻辑的问题是它目前在某些情况下会接受某些 if 语句。例如:
else
if(//herpderp){}
它这样做是因为 \s 包含 \n。我觉得如果我的表达式只查找空格而不是任何空格,我就不会遇到这个问题,但我无法检验我的理论,因为似乎没有 \(insert letter here) 只是一个简单的空间。
那么问题来了。如果您对如何修复我的正则表达式有任何建议,或者如果有更好的编写脚本的一般方法,请告诉我。
请您参考如下方法:
可以通过使用单个空格来匹配单个空格,就像匹配任何其他非元字符的字符一样:
"r'\w+? +?\w+? *?\(.*?\)\s*?{"
' +?' 序列匹配仅一个或多个空格,非贪婪。我将 [\n\s] 替换为 \s,因为 \n 已经包含在内。
您可以扩展到具有更多类型空白的字符类:
[ \t]
匹配空格或制表符。
