我喜欢将 Python 源代码与
diff
util 进行比较,并且我看到 git diff
显示了块或块中的函数名称(对于某些文件,但也不适用于 Python)?标头。这就是为什么我试图对正常的diff
做同样的事情。
然后我发现有一个
-p, --show-c-function
参数,它不能很好地处理Python文件(我只获取类名)。所以我还在手册页中找到了参数:-F, --show-function-line=RE
现在我搜索了一个不错的 RE 来匹配 python 函数,将它们包含在我的 diff 输出中,但运气不佳。
我知道我们有
def myname():
或 async def myname():
...也许还有更多?
有人有一个好的正则表达式吗?
我找到了这个,但它不适用于 diff util(输出没有函数名称):
diff -Nru -F '(?P<function>\w+)\s?\((?P<arg>(?P<args>\w+(,\s?)?)+)\)' modules/websocket/__init__.py.old modules/websocket/__init__.py
问候, 托马斯
正在比较跨版本的两个大型 Python 代码库,并且缺少函数名称 - 因此根据这个问题中的提示,我使用了
-F
参数。
这真的很简单 -
diff -F '\Wdef ' old.py new.py
匹配任何后跟空格且前面是非单词字符(例如换行符或空格)的
def
。