[
Dobj(id=null, dmetaD=DmetaD(id=2068, embedded=true, size=123, comment=raghu, name=string, type=pdf)),dcont=DConD(data=abc)),
Dobj(id=null, dmetaD=DmetaD(id=2069, embedded=true, size=123, comment=raghu, name=string, type=pdf)),dcont=DConD(data=abc))
]
如您在上面的对象数组中所看到的,我想拆分和检索所有名称为DmetaD和DConD的对象。
例:
String x=DmetaD(id=2068, embedded=true, size=123, comment=raghu, name=string, type=pdf))
String y=DConD(data=abc)
最佳答案
可以将Pattern & Matcher与该正则表达式(DmetaD\\(.*?\\)|DConD\\(.*?\\))
一起使用,例如,如果您使用的是Java 9+:
String input = "...";
String regex = "(DmetaD\\(.*?\\)|DConD\\(.*?\\))";
List<String> result = Pattern.compile(regex)
.matcher(input)
.results()
.map(MatchResult::group)
.collect(Collectors.toList());
输出量
DmetaD(id=2068, embedded=true, size=123, comment=raghu, name=string, type=pdf)
DConD(data=abc)
DmetaD(id=2069, embedded=true, size=123, comment=raghu, name=string, type=pdf)
DConD(data=abc)
在Java 9之前,您可以使用:
Matcher matcher = Pattern.compile(regex).matcher(input);
List<String> result = new ArrayList<>();
while (matcher.find()) {
result.add(matcher.group());
}
有关正则表达式
(DmetaD\(.*?\)|DConD\(.*?\))
的详细信息DmetaD\(.*?\)
匹配项,以DmetaD
开头,后跟括号之间的任何内容。|
或DConD\(.*?\)
匹配项,以DConD
开头,后跟括号之间的任何内容。