使用 java 正则表达式从字符串中删除括号

2022-09-03 03:32:04

我想使用Java正则表达式删除括号,但我遇到错误,请参阅我的代码并帮助我。No group 1

public String find_parenthesis(String Expr){
        String s;
        String ss;
        Pattern p = Pattern.compile("\\(.+?\\)");
        Matcher m = p.matcher(Expr);
        if(m.find()){
            s = m.group(1);
            ss = "("+s+")";
            Expr = Expr.replaceAll(ss, s);
            return find_parenthesis(Expr);
        }
        else
            return Expr;
    }

这是我的主要:

public static void main(String args[]){
    Calculator c1 = new Calculator();
    String s = "(4+5)+6";
    System.out.println(s);
    s = c1.find_parenthesis(s);
    System.out.println(s);
}

答案 1

最简单的方法是从字符串中删除所有括号,无论它们是否平衡。

String replaced = "(4+5)+6".replaceAll("[()]", "");

正确处理平衡需要解析(或者真正丑陋的RE,只匹配有限的深度,或者“聪明”与重复的正则表达式替换)。在大多数情况下,这种复杂性是过分的;可能起作用的最简单的事情就足够了。


答案 2

你想要的是这个:s = s.replaceAll("[()]","");

有关正则表达式的更多信息,请访问正则表达式教程