Регулярное выражение Java String в массиве строк для захвата вложенных данных - PullRequest
0 голосов
/ 15 мая 2018
[
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)

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете использовать 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, за которым следует любая вещь в скобках.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...