正则表达式:匹配多行模式

时间:2013-06-12 06:51:11

标签: regex

我需要一个匹配跨多行传播的模式的正则表达式。例如,我需要进行特定作者的第一次git提交。

我知道有一种方法可以使用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

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

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

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

这是proof of concept

答案 1 :(得分:1)

\r\n用于新行:

commit (.*)\r\nAuthor:(\s*\w+\s*\w+)