Вы можете достичь этого с помощью регулярного выражения:
//Filling Your test case and print
String entry = "Msg_Begin\r\n" +
"Some message1\r\n" +
"Msg_End\r\n" +
"Msg_Begin\r\n" +
"Some message2\r\n" +
"Msg_End\r\n" +
"Msg_Begin\r\n" +
"Some message3\r\n" +
"Msg_End";
System.out.println("IN : \r\n" + entry) ;
//Compile the regular expression patern, providing the DOTALL flag to enable mutiline matches
Pattern p = Pattern.compile("Msg_Begin\r\n(.+?)\r\nMsg_End(\r\n)?", Pattern.DOTALL) ;
Matcher m = p.matcher(entry) ;
// iterate over results (for exemple add them to a list)
System.out.println("\r\nOUT :") ;
List<String> list = new ArrayList<>();
while (m.find()) {
list.add( m.group(1));
System.out.println(m.group(1)) ;
}
Дать следующий результат:
IN :
Msg_Begin
Some message1
Msg_End
Msg_Begin
Some message2
Msg_End
Msg_Begin
Some message3
Msg_End
OUT :
Some message1
Some message2
Some message3
Более подробную информацию о синтаксисе регулярных выражений можно найти здесь