用python解析git-log文件

用python解析git-log文件,python,regex,git,git-log,Python,Regex,Git,Git Log,所以我需要分析如下内容: commit e397a6e988c05d6fd87ae904303ec0e17f4d79a2 Author: Name <email@email.com> Date: Sat Jul 9 21:29:10 2011 +0400 commit message 1 files changed, 21 insertions(+), 11 deletions(-) 但是我想用一个正则表达式得到名称、插入和删除的元组列表 我试着做一些像这样的事情

所以我需要分析如下内容:

commit e397a6e988c05d6fd87ae904303ec0e17f4d79a2
Author: Name <email@email.com>
Date:   Sat Jul 9 21:29:10 2011 +0400

    commit message

 1 files changed, 21 insertions(+), 11 deletions(-)
但是我想用一个正则表达式得到名称、插入和删除的元组列表

我试着做一些像这样的事情

re.findall(r"Author: (.+) <.+ (\d+) insertions\S+, (\d+) deletions",gitLog,re.DOTALL)

re.findall(r)Author:(.+)如果您可以访问repo,而不是一些
git log的文本转储文件
,则可以省去解析麻烦,并生成不同的日志输出:

git log --pretty="%an" --numstat
将生成以下表单的输出:

作者姓名

行\u插入行\u删除修改的\u文件


你甚至不需要正则表达式。如果你想继续使用正则表达式,你需要在插入后匹配
(+)
,否则它将根本不匹配,也不会捕获数字。

你应该使用(直接或借用代码)现有包,例如,但关于您的正则表达式问题,为提供的文本提供的正则表达式返回
[('Name','21','11')]
,因此我认为这是正确的。

因此,我的问题的答案是:

re.findall(r"Author: (\S+) <.+\n.+\n\n.+\n\n.+ (\d+) insertions\S+, (\d+) deletions",gitLog)

re.findall(r“Author:(\S+)我用Python解析Git日志时使用了一个模块。看起来非常生动:


然后每次都必须针对所需的每种类型的信息运行log命令。
git log --pretty="%an" --numstat
re.findall(r"Author: (\S+) <.+\n.+\n\n.+\n\n.+ (\d+) insertions\S+, (\d+) deletions",gitLog)