I Think Ниже код должен работать:
Алгоритм: сначала отметьте конечное положение открывающей скобки с помощью стека, а затем следующую итерацию у вас есть положение открытия и закрытия.
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
String s = "(red(blue))grey((orange)green)";
int n = s.length();
int end[] = new int[n];
boolean internalWords = false;
Stack<Integer> stack = new Stack<Integer>();
for(int i = 0 ; i < n ; i++){
if(s.charAt(i)=='('){
stack.push(i);
}else if(s.charAt(i)==')'){
int start = (Integer)stack.pop();
end[start] = i;
}else if(stack.isEmpty()){
System.out.print(s.charAt(i));
}
}
System.out.println();
for(int i = 0 ; i < n ; i++){
if(s.charAt(i)=='('){
for(int j = i ; j <= end[i]; j++){
System.out.print(s.charAt(j));
}
System.out.println();
}
}
}
}
вне положенный:
grey (red(blue)) (blue) ((orange)green) (orange)
Я дам подход здесь, вы можете использовать стек для каждого персонажа будет вставить в it.lets сказать (..) -> по имени в качестве контейнера каждого контейнера содержит контейнер, поэтому on.if u сталкиваются с (вставлять в стеке, продолжая до столкновения с символом ')', когда вы сталкиваетесь с), до тех пор, пока не появится символ '(' и создайте объект контейнера в стеке, а также список, чтобы показать, что это будет работать на вашем вопрос –
Возможный дубликат [Как я могу рекурсивно сопоставить шаблон с использованием регулярных выражений?] (http://stackoverflow.com/questions/8659764/how-can-i-recursive-match-a-pattern-using-regular-express ионов) –
Сальвадор, вы должны показать, что вы пробовали, чтобы мы могли видеть, что вы действительно пробовали вещи – tucuxi