Regexp:匹配多行模式

Regexp:匹配多行模式,regex,Regex,我需要一个regexp,它匹配跨多行分布的模式。例如,我需要接受特定作者的第一次git提交 我知道有一种方法可以使用git实现这一点,但我希望在regexp中使用它 commit 9a06fd844952587774632f470442288e422910da Author: Mark Gitter <mark.gitter@microsoft.com> Date: Tue Jun 11 17:13:26 2013 +0300 Random git comment.

我需要一个regexp,它匹配跨多行分布的模式。例如,我需要接受特定作者的第一次git提交

我知道有一种方法可以使用git实现这一点,但我希望在regexp中使用它

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

    Random git comment.

有什么想法吗?

\r\n
换行:

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

由于一些作者姓名中包含空格,我们可以捕获所有内容,直到
,以下是答案。

我试图进入下一行。例如,我希望
commit[a-z0-9]*\nautor
匹配
commit 9a06fd844952587774632f470442288e422910da作者
。我做错了什么?你在Windows上。似乎它包含
\r
。使用
\s+
使其更加健壮<代码>提交([a-z0-9]{40})\s+作者
是的,问题是行返回。我发现
commit(.*)[(\r)|(\r\n)|(\r\n)]Author:(\s*\w+)
非常跨平台…对我来说,这只捕获了作者的名字。它只捕获了作者的名字,我的主要目的是展示如何处理新行字符,但我正在更新答案以捕获整个name@JasonSwartz:您可能需要
(\r\n |\r |\n)
。您的版本将在字符类中包含
()
commit (.*)\r\nAuthor:(\s*\w+\s*\w+)
commit ([a-z0-9]*)\s*Author:(\s*[^<]+)(?<!\s)