Java String.split () иногда дает пустые строки

Я делаю текстовый ролик для игры в кости. Он принимает в виде строк "2d10 + 5" и возвращает строку в результате броска (ей). Моя проблема обнаруживается в токенизаторе, который разбивает строку на полезные части, чтобы я мог разобрать информацию.

String[] tokens = message.split("(?=[dk\\+\\-])");

Это дает странные, неожиданные результаты. Я нене знаю точно, что их вызывает. Это может быть регулярное выражение, мое недоразумение или просто Java. Вот'с чемпроисходит:

3d6+4 дает массив строк[3, d6, +4], Это правильно.d% дает массив строк[d%], Это правильно.d20 дает массив строк[d20], Это правильно.d%+3 дает массив строк[, d%, +3], Это неверноd20+2 дает массив строк[, d20, +2], Это неверно

В четвертом и пятом примере что-то странное заставляет дополнительную пустую строку появляться в начале массива. Это'не отсутствие числа в начале строки, как это подтверждают другие примеры. Это'не наличие ни знака процента, ни знака плюс.

Сейчас яЯ просто продолжаю цикл «for» на пустых строках, но это похоже на решение проблемы с пластырем. У кого-нибудь есть идеи, что вызывает пустую строку в начале массива? Как я могу это исправить?

Ответы на вопрос(3)

Ваш ответ на вопрос