Благодаря информации от Cine, я думаю вот ответы, которые я ищу:
System.out.println(
Arrays.deepToString(
"abc<def>ghi<x><x>".split("(?=<)|(?<=>)")
)
); // [abc, <def>, ghi, <x>, <x>]
System.out.println(
Arrays.deepToString(
"Hello! Oh my!! Good bye!! IT WORKS!!!".split("(?<=!++)")
)
); // [Hello!, Oh my!!, Good bye!!, IT WORKS!!!]
Теперь, второй был честно обнаружен, экспериментируя со всеми различными квантификаторами. Ни жадная, ни нежелательная работа, но притяжательная работа.
Я до сих пор не знаю, почему.