我知道已经讨论过很多次了,但是我尝试了很多方法来使我的正则表达式从多行中读取信息,但没有任何效果。这是我想做的事情:

我有一个文本文件。它的内容为:

Description1 This is a test description.  Yay.  Description2


正则表达式(?<=Description1\\s).*(?=\\sDescription2)按照预期的方式工作,以返回之间的所有文本,但不包括单词Description1和Description2。

但是,即使中间的文本由另一行分隔,我也必须能够做到这一点。像这样

Description1 This is a
test description.  Yay.  Description2


我已经尝试了所有可以找到的东西,从Pattern.MULTILINE标志到Pattern.DOTALL,再到开始添加(?s),再添加[/r/n],似乎没有任何效果。
任何帮助将不胜感激。这是一个更大的个人项目的一小步。

最佳答案

这应该工作

(?s)(?<=Description1\\s).*?(?=\\sDescription2)
 ^                       ^




(?s)将使.匹配换行符

.*?会延迟匹配..e.e,它会尽可能少地匹配。.这是因为使用.*会终止匹配,直到最后一个Decription2

09-25 18:03