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ê.