我想使用python import re
来拆分Git日志的字符串如下:
commit 8e018dbcdbff15c3fc9ef4460b4214f47f71ddf6
Author: ISAAC.NEWTON <ISAAC.NEWTON@GOOGLE.COM>
Date: Fri Apr 28 18:58:00 2023 +0800
new cat
commit 9274b33435238122c8d6d389e73266f6a3e68745
Author: ISAAC.NEWTON <ISAAC.NEWTON@GOOGLE.COM>
Date: Wed Apr 19 11:04:04 2023 +0800
meow
commit 4f113912741f753c75a44f18790ff5903e910fad
Author: ISAAC.NEWTON <ISAAC.NEWTON@GOOGLE.COM>
Date: Fri Apr 14 17:55:55 2023 +0800
Add test files
commit 9274b33435238122c8d6d389e73266f6a3e68745
Author: ISAAC.NEWTON <ISAAC.NEWTON@GOOGLE.COM>
Date: Wed Apr 19 11:04:04 2023 +0800
Second commit test
commit 9274b33435238122c8d6d389e73266f6a3e68745
Author: ISAAC.NEWTON <ISAAC.NEWTON@GOOGLE.COM>
Date: Wed Apr 19 11:04:04 2023 +0800
First commit
然后
我想得到如下的commits数组:
[
'
commit 8e018dbcdbff15c3fc9ef4460b4214f47f71ddf6
Author: ISAAC.NEWTON <ISAAC.NEWTON@GOOGLE.COM>
Date: Fri Apr 28 18:58:00 2023 +0800
new cat
',
'
commit 9274b33435238122c8d6d389e73266f6a3e68745
Author: ISAAC.NEWTON <ISAAC.NEWTON@GOOGLE.COM>
Date: Wed Apr 19 11:04:04 2023 +0800
meow
',
...
]
对我来说,很难找到与提交匹配的Clean和General模式。
任何想法都欢迎
谢谢
5条答案
按热度按时间6yoyoihd1#
将问题定义为使用已知的开始/结束模式定位块。
然后,定义块的开始和结束位置-这里通过锚定到提交哈希。
它给出了预期的输出
编辑:注意EOF使用sentinel
\Z
处理tyu7yeag2#
如果您显示的摘录是您自己的
git log
命令的输出,您也可以定义自己的格式字符串。例如:
应该会给予你一个类似这样的输出:
因此,您可以简单地将输出拆分到
^--commit--$
上,或者甚至选择一个no regexp选项,然后拆分到"--commit--"
上(<-如果您分隔符具有足够的判别性,不会出现在提交消息中,这应该是可以的),或者"\n--commit--\n"
,然后处理第一行,或者...%w(...)
如何在--pretty
字符串中工作。cwxwcias3#
你可以使用Python中的re模块根据commit关键字拆分字符串。下面是一个例子:
dy1byipe4#
也许你可以尝试使用re.split,像这样:
你可以直接使用split函数,而不用re:
brc7rcf05#
如果您是生成输出的人,则不需要使用正则表达式。您可以在空字节上进行拆分。
或者至少我从来没有在提交消息中看到过这样的控制字符。