Если вы хотите использовать только метод разделения, вот подход, который вы тоже можете использовать,
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
String content = "aba(2)bb(52)gc(4)d(2)fe(14)f(6)g(8)h(4)5(6)";
String[] a = content.replaceAll("[a-g](\\([0-9]*\\))?|[a-g]", "$0:").split(":");
// $0 is the string which matched the regex
System.out.println(Arrays.toString(a));
}
}
Regex: [a-g](\\([0-9]*\\))?|[a-g]
соответствует строкам, с которыми вы хотите соответствовать (то есть a, b, a (5) и т. Д.)
Используя это регулярное выражение, я сначала заменяю эти строки их добавленными версиями (с добавлением :). Позже я разбил строку, используя метод split.
Вывод вышеуказанного кода:
[a, b, a(2), b, b(52), g, c(4), d(2), f, e(14), f(6), g(8), h(4)5(6)]
ПРИМЕЧАНИЕ. Этот подход будет работать только с разделителем, который, как известно, отсутствует во входной строке. Например, я выбрал двоеточие, потому что предполагал, что оно не будет частью входной строки.