nuclear_kote
@nuclear_kote

Как получить значения массива регуляркой?

\\"bla\\":\[(?:\\"(\d+)\\",?)+\]


//\"bla\":[\"1000\",\"1002\",\"1\",\"22222\",\"333\",\"3333\",\"33344\"]

Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
    System.out.println(matcher.group(1));
}


split не предлагать
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
@gsaw
Не думаю, что так можно. Проще и понятнее сделать в два шага, сначала вытащить из квадратных скобок содержимое

"bla":\[([^\]]*)\]

А потом из найденного содержимого квадратных скобок получить все группы

"([0-9]+)"

String input = "\"bla\":[\"1000\",\"1002\",\"1\",\"22222\",\"333\",\"3333\",\"33344\"]";
        Pattern pattern = Pattern.compile("([0-9]){1,}");
        Matcher matcher = pattern.matcher(input.replaceAll("\"bla\":\\[([^\\]])\\]", "$1"));
        while (matcher.find()) {
            System.out.println("g:"+ matcher.start() + " " + matcher.group());
        }


А если не советовать split, то проще наверное gson использовать. Там можешь json структуру обойти и получить массив не избретая велосипед и не обязательно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы