我被困在一些可能非常简单的事情上,但我找不到解决方案。几天以来我一直在使用 Python,我需要使用正则表达式来获取文件的一部分。
我将 a 的结果git log -p
放入一个文件中,现在我想提取一些信息。我唯一无法提取的是评论块。
此块介于:日期线和(差异线或列表末尾)之间。
...
Date: Wed Jul 3 22:32:36 2013 +0200
Here is the comment
of a commit
and I have to
extract it
diff --git a/dir.c b/dir.c
...
...
Date: Wed Jul 3 22:32:36 2013 +0200
Here is the comment
of a commit
and I have to
extract it
所以我试着这样做:
commentBlock = re.compile("(?<=Date:.{32}\n\n).+(?=|\n\ndiff)", re.M|re.DOTALL)
findCommentBlock = re.findall(commentBlock,commitBlock[i]) # I've splited my git log everytime I find a "commit" line.
问题是:
- 日期线的长度可以改变。可能是
Date:.{32}
日期在 1 日到 9 日之间,或者Date:.{33}
日期是 2 个数字长。 - 我不知道怎么说:“当一行以
diff
OR 开头时,注释块停止,当它是列表(或文件)的末尾时”。
PS我正在使用Python 3.x,我几乎完成了我的脚本,所以我真的不想使用特定的工具GitPython
(仅适用于2.x)