How to split a string between letters and digits (or between digits and letters)?

You could try to split on (?<=\D)(?=\d)|(?<=\d)(?=\D), like:

str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");

It matches positions between a number and not-a-number (in any order).

  • (?<=\D)(?=\d) – matches a position between a non-digit (\D) and a digit (\d)
  • (?<=\d)(?=\D) – matches a position between a digit and a non-digit.

Leave a Comment