Java正規表現を使用して文字列から括弧を削除する 質問する

Java正規表現を使用して文字列から括弧を削除する 質問する

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、または繰り返し正規表現置換による「巧妙さ」) が必要です。ほとんどの場合、このような複雑さはやりすぎです。機能する可能性のある最も単純なもので十分です。

おすすめ記事