Java 如何将n行数与正则表达式匹配

Java 如何将n行数与正则表达式匹配,java,regex,Java,Regex,我有一些这样的文字 Notes: He jumped the sea-horse but it looked ropey Then he left Notes: Clay is only green When it is seen 但有时是这样的 Notes: He jumped the sea-horse but it looked ropey Then he left Notes: Clay is only green When it is seen 我需要在“Not

我有一些这样的文字

Notes:
He jumped the sea-horse
but it looked ropey
Then he left
Notes:




Clay is only green
When it is seen
但有时是这样的

Notes:
He jumped the sea-horse
but it looked ropey
Then he left
Notes:




Clay is only green
When it is seen
我需要在“Notes”之后捕获4行文本,这样输出应该是

Notes:
He jumped the sea-horse
but it looked ropey
Then he left
第二个例子呢

Notes:
我尝试过匹配换行符,但它只在正则表达式的其余部分之后匹配

Notes:.*\n{4}

如何创建一个正则表达式,允许我对整行和换行重复匹配四次?(这是一个非捕获组吗??)

您在
注释:..*\n{4}
中非常接近
{4}
只绑定到换行符,因此它只捕获“Notes:”后跟任何内容,后跟4个空行


您正在寻找类似于
注释:\n((?:.*\n){1,4})

如果我理解正确,并且您希望捕获前4行,而不管它们是否为空,最好根本不使用regex,只需在换行上拆分文本,就可以得到一个字符串数组。大概是这样的:

string[] lines = text.split("\\r")

然后简单地选择数组的前四个元素。

为什么选择正则表达式??Java还有其他选择,而不是将整个文件读入字符串并匹配换行符,而是一次只读取一行。当您看到“Notes:”时,只需阅读适当数量的附加行。我想问题是为什么不使用regex?因此,假设我想使用捕获组来获取。*\n括号是否充当捕获组来提供所有四行?啊,您是对的,捕获行为不是您想要的。更新响应,以具有外部捕获组和最多4个内部非捕获组。