Regex dividido em seqüências de caracteres sobrepostas

Estou explorando o poder das expressões regulares, então, estou me perguntando se algo assim é possível:

public class StringSplit {
    public static void main(String args[]) {
        System.out.println(
            java.util.Arrays.deepToString(
                "12345".split(INSERT_REGEX_HERE)
            )
        ); // prints "[12, 23, 34, 45]"
    }
}

Se possível, simplesmente forneça o regex (e preemptivamente algumas explicações sobre como ele funciona).

Se isso for possível apenas em alguns outros tipos de expressões regulares que não Java, fique à vontade para fornecê-los também.

Se não for possível, explique o motivo.

PERGUNTA DE BÔNUS

A mesma pergunta, mas com umfind() loop em vez desplit:

    Matcher m = Pattern.compile(BONUS_REGEX).matcher("12345");
    while (m.find()) {
        System.out.println(m.group());
    } // prints "12", "23", "34", "45"

Observe que não é tanto que eu tenha uma tarefa concreta para realizar de uma maneira ou de outra, mas quero entender expressões regulares. Não preciso de código que faça o que eu quero; Desejo expressões regulares, se existirem, que eu possa usar no código acima para realizar a tarefa (ou expressões regulares em outros tipos que funcionam com uma "tradução direta" do código em outro idioma).

E se eles não existirem, eu gostaria de uma boa explicação sólida do porquê.

questionAnswers(5)

yourAnswerToTheQuestion