[
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开头,后跟括号之间的任何内容。

09-20 07:20