Есть ли регулярное выражение для выделения подстроки из строки, содержащей несколько скобок?Как извлечь подстроки, содержащие несколько круглых скобок в Java?
Например моя строка
String str = "(A(B(C(D(x)))))";
Я хочу, чтобы напечатать все вложенные строки, которые лежат в пределах любой пары скобок:
A(B(C(D(x))))
B(C(D(x)))
C(D(x))
D(x)
x
Я попытался с помощью регулярных выражений:
Matcher m = Pattern.compile("\\((.*?)\\)").matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
Но это только извлекает подстроку, найденную между первой парой круглых скобок.
Я не думаю, что это можно будет решить таким образом, потому что совпадающие сбалансированные круглые скобки невозможны с регулярными выражениями. Не со стандартным синтаксисом (насколько я помню, .NET имеет что-то для балансировки). – siarheib