[英]How to parse this string in Java
I would like to understand how you would parse the below string in Java.我想了解您将如何解析 Java 中的以下字符串。 Basically, I want everything between the text "Begin-Data" and "End-Data"基本上,我想要文本“Begin-Data”和“End-Data”之间的所有内容
Begin-Data
abc
123
End-Data
A one-liner solution uses String#replaceAll
:单线解决方案使用String#replaceAll
:
String input = "Begin-Data abc 123 End-Data";
String output = input.replaceAll("(?s).*\\bBegin-Data\\s+(.*?)\\s+End-Data\\b.*", "$1");
System.out.println(output); // abc 123
This answer assumes that the input string only contains the starting/ending tags Begin-Data
and End-Data
once.此答案假定输入字符串仅包含一次开始/结束标签Begin-Data
和End-Data
。 If you have many such tags, then you should use a formal regex pattern matcher:如果你有很多这样的标签,那么你应该使用正式的正则表达式模式匹配器:
String input = "Begin-Data abc 123 End-Data Begin-Data abc 345 End-Data";
String pattern = "(?s)\\bBegin-Data\\s+(.*?)\\s+End-Data\\b";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(input);
List<String> matches = new ArrayList<>();
while (m.find( )) {
matches.add(m.group(1));
}
System.out.println(matches); // [abc 123, abc 345]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.