如何在Java中解析此字符串

如何在Java中解析此字符串,java,string,parsing,Java,String,Parsing,我想了解如何用Java解析下面的字符串。基本上,我想要文本“开始数据”和“结束数据”之间的所有内容 开始数据 abc 123 结束数据 单行程序解决方案使用字符串#replaceAll: String input=“开始数据abc 123结束数据”; 字符串输出=input.replaceAll(“(?s)。*\\bBegin Data\\s+(.*?\\s+结束数据\\b.*”,“$1”); System.out.println(输出);//abc 123 此答案假设输入字符串只包含一次开始

我想了解如何用Java解析下面的字符串。基本上,我想要文本“开始数据”和“结束数据”之间的所有内容

开始数据
abc
123
结束数据

单行程序解决方案使用
字符串#replaceAll

String input=“开始数据abc 123结束数据”;
字符串输出=input.replaceAll(“(?s)。*\\bBegin Data\\s+(.*?\\s+结束数据\\b.*”,“$1”);
System.out.println(输出);//abc 123
此答案假设输入字符串只包含一次开始/结束标记
Begin Data
End Data
。如果有许多这样的标记,则应使用正式的正则表达式模式匹配器:

String input=“开始数据abc 123结束数据开始数据abc 345结束数据”;
字符串模式=“(?s)\\bBegin Data\\s+(.*?\\s+End Data\\b”;
Pattern r=Pattern.compile(Pattern);
匹配器m=r.匹配器(输入);
列表匹配项=新的ArrayList();
而(m.find()){
匹配。添加(m组(1));
}
System.out.println(匹配项);//[abc 123,abc 345]

indexOf和substring是一种很好的ol时尚方式。请包括您迄今为止尝试过的内容。@ScaryWombat我的假设是OP只需要一对标签。对于您上面的输入,我们应该使用一个正式的模式匹配器,q.v.我的更新答案。正则表达式之王-被否决的几率<10%;-)事实上,他是这个网站上有史以来的正则表达式之王。当他睡觉时,我确实在这里和那里的正则表达式标记上得到了一些分数