Есть один способ сделать это. Это не особенно красиво. То, что это включает, проходит через строку символ за символом. Когда вы достигаете «[», вы начинаете помещать персонажей в новый токен. Когда вы достигаете «]», вы останавливаетесь. Лучше всего это сделать с использованием структуры данных, а не массива, поскольку массивы имеют статическую длину.
Другое возможное решение - использовать регулярные выражения для метода разбиения String. Единственная проблема, с которой я столкнулся, - это придумать регулярное выражение, которое разделило бы то, что вы хотите. Что я могу придумать, это {] строка символов [) XOR (строка символов [) XOR (] строка символов) Каждый набор скобок обозначает различные регулярные выражения. Вы должны оценить их в этом порядке, чтобы случайно не удалить все, что вы хотите. Я не знаком с регулярными выражениями в Java, поэтому я использовал «строку символов», чтобы обозначить наличие символов в скобках.