提取 Java 中标签之间的字符串
Extract string between the tags in Java
我有如下字符串
Msg_Begin
Some message1
Msg_End
Msg_Begin
Some message2
Msg_End
Msg_Begin
Some message3
Msg_End
并希望将 Msg_Begin 和 Msg_End 之间的消息添加到列表中
喜欢
[Some message1, Some message2, Some message3]
Java 中对此的最佳方法是什么。
var messages = originalString.replaceAll("Msg_Begin", "");
var array = messages.split("Msg_End");
return Arrays.asList(array);
请确保您的消息不包含 Msg_Begin
或 Msg_End
。
您可以使用正则表达式来实现:
//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
可以找到有关正则表达式语法的更多信息 here
我有如下字符串
Msg_Begin
Some message1
Msg_End
Msg_Begin
Some message2
Msg_End
Msg_Begin
Some message3
Msg_End
并希望将 Msg_Begin 和 Msg_End 之间的消息添加到列表中 喜欢
[Some message1, Some message2, Some message3]
Java 中对此的最佳方法是什么。
var messages = originalString.replaceAll("Msg_Begin", "");
var array = messages.split("Msg_End");
return Arrays.asList(array);
请确保您的消息不包含 Msg_Begin
或 Msg_End
。
您可以使用正则表达式来实现:
//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
可以找到有关正则表达式语法的更多信息 here