正则表达式为Git提交日期

时间:2017-02-24 22:19:07

标签: regex git parsing

我想从git日志中获取所有日期。例如,如果我做

git log

我正在

...
commit foofoofoofoofoomorefoos
Author: pragmaticus <foo@foo.tld>
Date:   Fri Feb 24 19:58:19 2017 +0100
...

使用以下正则表达式提取日期

(\w{3} \w{3} [0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} [0-9]{4})

导致

Fri Feb 24 19:58:19 2017

正如你所看到的,正则表达式很长。有没有办法形成一个不那么冗长的模式?

更新

正如@bejado在评论中所建议的,我用\ d

替换了所有[0-9]标记
(\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \d{4}) 

还有很多重复的令牌。我们能走多远,让它更短?

更新

到目前为止@MohaMed的最短正则表达式

^Date:\s*(.*)\s[\+\-].*$

我喜欢模式测试字符串的方式&#34;日期:&#34;和&#34; + / - &#34;最后签名。

2 个答案:

答案 0 :(得分:1)

@MohaMad

建议的一个相当稳定且短的正则表达式
^Date:\s*(.*)\s[\+\-].*$

通过更改git日志输出的格式,我甚至可以通过打印日期来消除正则表达式的需要(感谢@torek)。

git log --format="%ad"

答案 1 :(得分:0)

你可以使用这个正则表达式:\ w {3} \ w {3} [0-9 \ s:] *,但我相信torek的反应更好。