Вы можете разделить вашу строку, используя это регулярное выражение,
\+|(?=-)
. Способ, которым это работает, разбивает строку, потребляющую символ +
, но если есть -
, то она разделяется, используя -
но не потребляет -
, поскольку это предвидение.
Проверьте этот код Java,
String s = "5x^3-2x^2+5x";
System.out.println(Arrays.toString(s.split("\\+|(?=-)")));
Дает ожидаемый результат ниже,
[5x^3, -2x^2, 5x]
Редактировать:
Хотя в одном из комментариев ОП в своем посте он сказал, что не будет отрицательных способностей, но только в том случае, если у вас также есть отрицательные способности, вы можете использовать это регулярное выражение, которое обрабатываеттакже отрицательные силы,
\+|(?<!\^)(?=-)
Проверьте этот обновленный код Java,
List<String> list = Arrays.asList("5x^3-2x^2+5x", "5x^3-2x^-2+5x");
for (String s : list) {
System.out.println(s + " --> " +Arrays.toString(s.split("\\+|(?<!\\^)(?=-)")));
}
Новый вывод,
5x^3-2x^2+5x --> [5x^3, -2x^2, 5x]
5x^3-2x^-2+5x --> [5x^3, -2x^-2, 5x]