title: Can you use zero-width matching regex in String split?
body: <pre><code>System.out.println(
      Arrays.deepToString(
          "abc&lt;def&gt;ghi".split("(?:&lt;)|(?:&gt;)")
      )
  );
  </code></pre>
  
  <p>This prints <code>[abc, def, ghi]</code>, as if I had split on <code>"&lt;|&gt;"</code>. I want it to print <code>[abc, &lt;def&gt;, ghi]</code>. Is there a way to work some regex magic to accomplish what I want here?</p>
  
  <hr>
  
  <p>Perhaps a simpler example:</p>
  
  <pre><code>System.out.println(
      Arrays.deepToString(
          "Hello! Oh my!! Good bye!!".split("(?:!+)")
      )
  );
  </code></pre>
  
  <p>This prints <code>[Hello,  Oh my,  Good bye]</code>. I want it to print <code>[Hello!,  Oh my!!,  Good bye!!]</code>.
  `.</p>