Итак, я пытаюсь сделать пользовательский вариант 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);
}
Однако, когда я запускаю это, я получаю ошибку, что «Unclosed группа возле индекса 3» «3 (4» который я отлажена, чтобы найти, что линия string = string.replaceFirst(numbers[i], replace);
вызывает проблему. Либо мне нужно что-то сделать, либо я просто не понимаю ошибку, так как не понимаю, что я делаю неправильно, так как я хочу заменить первый экземпляр 3 (4 в пределах строка 3 (4) с 3 * (4. Я не хочу закрывать выражение как-то вроде 3 (4-x) приведет к ошибке 3 * (4) -x).
Спасибо за ваше время и имеют хороший день:. 3
Спасибо, я все еще новичок в библиотеке регулярных выражений, поэтому пропустить это не удивительно, хотя я думал, что использую 'replaceFirst (oldChar, newChar) 'для него или это не используется из-за переменных, которые я использовал? –
Если ваше выражение не содержат специальных символов, это не имеет значения, цитируете ли вы это или нет. – agad