2

我需要一个匹配跨越多行的模式的正则表达式。例如,我需要获取特定作者的第一个 git commit。

我知道有一种方法可以使用 git 来执行此操作,但我希望它在 regexp 中。

commit 9a06fd844952587774632f470442288e422910da
Author: Mark Gitter <mark.gitter@microsoft.com>
Date:   Tue Jun 11 17:13:26 2013 +0300

    Random git comment.

此正则表达式commit [a-z0-9]*与提交 sha-1 匹配,但我无法让它在下一行开始搜索。我正在http://gskinner.com/RegExr/中对其进行测试

我希望它匹配

commit 9a06fd844952587774632f470442288e422910da
Author: Mark Gitter

有任何想法吗?

4

2 回答 2

2

由于一些作者名称包含空格,我们可以捕获直到<符号的所有内容,不包括前面的空格。

commit ([a-z0-9]*)\s*Author:(\s*[^<]+)(?<!\s)

是概念证明

于 2013-06-12T07:10:19.150 回答
1

用于\r\n新行:

commit (.*)\r\nAuthor:(\s*\w+\s*\w+)
于 2013-06-12T06:55:22.950 回答