Regex dividido en cadenas superpuestas

Estoy explorando el poder de las expresiones regulares, así que me pregunto si algo como esto es posible:

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]"
    }
}

Si es posible, simplemente proporcione la expresión regular (y de forma preventiva alguna explicación sobre cómo funciona).

Si solo es posible en algunos sabores de expresiones regulares que no sean Java, no dude en proporcionarlos también.

Si no es posible, explique por qué.

PREGUNTA EXTRA

La misma pregunta, pero con unfind() bucle en lugar desplit:

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

Tenga en cuenta que no es tanto que tenga una tarea concreta que realizar de una forma u otra, sino que quiero entender las expresiones regulares. No necesito un código que haga lo que quiero; Quiero expresiones regulares, si existen, que pueda usar en el código anterior para realizar la tarea (o expresiones regulares en otros sabores que funcionen con una "traducción directa" del código a otro idioma).

Y si no existen, me gustaría una buena explicación sólida por qué.

Respuestas a la pregunta(5)

Su respuesta a la pregunta