Этот вопрос действительно расплывчатый, но при одной разумной интерпретации это решение, которое может позаботиться о произвольной глубине вложения в определенном формате:
String text = "(T)(T(V))(1(2(3)2)1)(a*(b+(c-d))+(e/f))";
String[] parts = text.split("(?<=\\))(?=\\()");
System.out.println(java.util.Arrays.toString(parts));
// prints "[(T), (T(V)), (1(2(3)2)1), (a*(b+(c-d))+(e/f))]"
В основном вы хотите split
между )(
(используя утверждения). Не будет работать во всех случаях, например ((.)(.))
, но, как говорили многие люди, требования этого вопроса расплывчаты, а проблема с общими сбалансированными скобками не разрешима с помощью регулярного выражения Java.
Смотри также