System.out.println( Arrays.deepToString( \"abcghi\".split(\"(?:<)|(?:>)\") ) );
This prints [abc, def, ghi]<
[abc, def, ghi]<
You need to take a look at zero width matching constructs:
(?=X) X, via zero-width positive lookahead (?!X) X, via zero-width negative lookahead (?<=X) X, via zero-width positive lookbehind (?