Составить регулярное выражение для замены одинарного знака сравнения
Необходимо в условии заменить одинарный знак '=' на двойное. Перед и после знака равно могут быть пробелы. Условия со знаками: '>=', '<=', '==', '!=' оставить как есть.
public class ReplaceSingleCharCompare {
public static void main(String[] args) {
String exp = "if (a=b)"; // должно быть if (a == b)
// exp = "if (a=b & b = c)"; // должно быть if (a == b & b == c)
// exp = "if (a=b & b <= c)"; // должно быть if (a == b & b <= c)
// exp = "if (a>=b && b = 1 && b <= c)"; // должно быть if (a>=b && b == 1 && b <= c)
// exp = "if (a>=b && b == 1 && b <= c && c=0)"; // должно быть if (a>=b && b == 1 && b <= c && c == 0)
// exp = "if (a>=b && b <= c)"; // должно быть if (a>=b && b <= c)
exp = exp.replaceAll("if \\((.+?)=(.+?)\\)", "if ($1 == $2)");
System.out.println(exp);
}
}
Ответы (1 шт):
Автор решения: default locale
→ Ссылка
Вроде так работает:
exp = exp.replaceAll("(?<![><!=])=(?!=)", "==");
Здесь используются негативные просмотры назад и вперед:
(?<![><!=])— не меняем, если перед знаком «=» стоит один из «><!=».(?!=)— так же не меняем, если после него стоит еще один «=».