Поиск…


замечания

Цель здесь состоит в том, чтобы не потерять контент, поэтому регулярное выражение не должно потреблять (сопоставлять) любой вход. Скорее, он должен совпадать между последним символом предыдущего целевого ввода и первым символом следующего целевого ввода. например, для 8-символьных подстрок, нам нужно сломать вход вверх (т.е. совпадение) в местах, отмеченных ниже:

a b c d e f g h i j k l m n o p q r s t u v w x y z
               ^               ^               ^

Игнорируйте пробелы на входе, которые должны отображаться между позициями символов.

Разбить цепочку на подстроки всей известной длины

Хитрость заключается в использовании внешнего вида с регулярным выражением \G , что означает «конец предыдущего совпадения»:

String[] parts = str.split("(?<=\\G.{8})");

Регулярное выражение соответствует 8 символам после окончания последнего совпадения. Так как в этом случае совпадение имеет нулевую ширину, мы могли бы просто сказать «8 символов после последнего совпадения».

Удобно, \G инициализируется для начала ввода, поэтому он также работает для первой части ввода.

Разбить строку на подстроки всей переменной длины

То же, что и пример известной длины, но вставляем длину в регулярное выражение:

int length = 5;
String[] parts = str.split("(?<=\\G.{" + length + "})");


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow