Вот версия regex для одной строки:
System.out.println(Arrays.toString(
"Thequickbrownfoxjumps".split("(?<=\\G.{4})")
));
\G
- утверждение нулевой ширины, которое соответствует позиции, где закончилось предыдущее совпадение. Если было без предыдущего совпадения, оно совпадает с началом ввода, так же как и \A
. Вложенный внешний вид соответствует позиции, которая находится на расстоянии четырех символов от конца последнего соответствия.
И lookbehind, и \G
- это расширенные функции регулярных выражений, которые поддерживаются не всеми разновидностями. Кроме того, \G
не реализован согласованно во всех разновидностях, которые его поддерживают. Этот прием будет работать (например) в Java , Perl, .NET и JGSoft, но не в PHP (PCRE), Ruby 1.9+ или TextMate (оба Oniguruma). JavaScript /y
(sticky flag) не так гибок, как \G
, и его нельзя использовать таким образом, даже если JS поддерживает lookbehind.
Я должен отметить, что я не обязательно рекомендую это решение, если у вас есть другие варианты. Решения без регулярных выражений в других ответах могут быть длиннее, но они также самодокументированы; это примерно 1022 * против этого. ;)
Кроме того, это не работает в Android, который не поддерживает использование \G
в lookbehinds.