替换表达式时带括号的未闭合组错误

时间:2015-05-13 10:20:41

标签: java regex replace parentheses

所以我想在评估之前通过读取字符串来创建ScriptEngineManager engine.eval()的自定义变体。我想将表达式 3(4)转换为 3 *(4),以便engine.eval()可以读取它。所以我尝试使用这种方法:

String string = 3(4);
String[] numbers = string.split("\\)|\\*|/|\\+|-");
if (numbers[i].contains("(")) {
    val = numbers[i].split("\\(");
    if (val[0].equals("")) {
        val[0] = "1";
    }
    String replace = val[0] + "*(" + val[1];
    string = string.replaceFirst(numbers[i], replace);
}

然而,当我运行这个时,我得到&#34;在索引3附近的未关闭组&#34; &#34; 3(4&#34; 我调试后发现行string = string.replaceFirst(numbers[i], replace);导致了问题。要么我需要做其他事情,要么我不理解错误,因为我不明白我做错了什么因为我希望用替换字符串 3(4)中的 3(4 )的第一个实例3 *(4 。我不想关闭表达式,因为 3(4-x)会导致错误 3 *(4)-x)< /强>

感谢您的时间和美好的一天:3

1 个答案:

答案 0 :(得分:0)

replaceAll(String regex ,字符串替换) - 所以参数“3(4”被视为正则表达式。要将其用作你需要引用它:Pattern.quote(numbers[i])