正如我在评论中所说,正则表达式根本不能处理嵌套括号。但是,如果您有一个堆栈,手动解析它们非常简单。以下是一些示例代码:
public static void main(String[] args) throws InterruptedException {
findSubExpressions("((p||q)=>r)");
}
private static void findSubExpressions(String input) {
Deque startingBrackets = new LinkedList();
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c == '(') {
startingBrackets.push(i);
} else if (c == ')') {
int correspondingStart = startingBrackets.pop();
logSubExpression(input.substring(correspondingStart+1, i));
}
}
}
private static void logSubExpression(String subExpression) {
System.out.println(subExpression);
}