首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用preg_match格式化git-log

使用preg_match格式化git-log
EN

Stack Overflow用户
提问于 2012-12-20 18:56:55
回答 1查看 228关注 0票数 0

我想以一种方便的方式格式化git-log匹配。git-log命令的输出如下:

代码语言:javascript
复制
commit 11ae9c97409fb349e2bfa50ed65bd23ec6dbca70
Author: Fabien Potencier <fabien.potencier@gmail.com>
Date:   Wed Jul 11 19:51:30 2012 +0200

    updated VERSION for 2.0.16

commit 6e14d67cb23439d6700f494e29e809811edeeade
Author: Fabien Potencier <fabien.potencier@gmail.com>
Date:   Wed Jul 11 19:50:55 2012 +0200

    update CONTRIBUTORS for 2.0.16

commit 0341492ed566fca8df556573b9664f691c5dff3d
Author: Fabien Potencier <fabien.potencier@gmail.com>
Date:   Wed Jul 11 19:48:12 2012 +0200

    updated CHANGELOG for 2.0.16

commit b18f6f557b5db1e2e6d2c2c0494e0564b91f438d
Author: Fabien Potencier <fabien.potencier@gmail.com>
Date:   Tue Jul 10 15:28:02 2012 +0200

    [Console] fixed wrong phpdoc (closes #4394)

我想按如下方式格式化:

代码语言:javascript
复制
Fabien Potencier, Wed Jul 11 19:51:30 2012 +0200

    updated VERSION for 2.0.16

Fabien Potencier, Wed Jul 11 19:50:55 2012 +0200

    update CONTRIBUTORS for 2.0.16

Fabien Potencier, Wed Jul 11 19:48:12 2012 +0200

    updated CHANGELOG for 2.0.16

Fabien Potencier, Tue Jul 10 15:28:02 2012 +0200

    [Console] fixed wrong phpdoc (closes #4394)

为此,我编写了一个PHP脚本,如下所示。

代码语言:javascript
复制
<?php

$r = shell_exec('git log');

$p = '/commit (.{2})(.{4})(.{6})/';// THIS SHOULD CHANGE!

preg_match_all($p, $r, $match);

unset($match[0]);

$output = array();

foreach($match as $k1=> $v1)

    foreach($v1 as $k2=>$v2)

          @$output[$k2] .= $v2 . ($k1==1 ? ',' : PHP_EOL);

echo implode('', $output);

我不知道我应该在这里使用什么模式。请帮帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-20 19:08:35

下面的一些方法应该能起到作用:

代码语言:javascript
复制
/Author:\s*(?<name>.+)\s+Date:\s*(?<date>.+)\s+(?<message>(?:(?!commit .{40}).)+)/i

设置了三个反向引用,每个数据集对应一个反向引用。

如果您需要帮助理解保存的数据,请打印$match-array。

Demo+explanation:http://regex101.com/r/cA0lD3

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13970621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档