utilizando paréntesis replaceAll método Java

Me gustaría cambiar una palabra en una oración, pero la palabra tiene paréntesis. Lo mantengo en la variable String. Dentro de la variableS t yo tengo

manages(P0,MT0)

Dentro de otra variable de cadenaDES Tengo la siguiente oración:

query(MT0, P0) :- not(manages(P0,MT0)), ins_manages(P0,MT0), not(physician(P0)), not(ins_physician(P0))

Entonces tengo otra variable de cadenaquerypart que almacena la nueva palabra:

managesa

Lo que probé en el código fue:

EDC = EDC.replaceAll(st,querypart);

Pero no funcionó.

Pensé que el problema podría ser la parálisis, así que cambié la cadena como variable st como:

manages\\(P0,MT0\\)

entonces lo intenté

EDC = EDC.replaceAll(st,querypart);

pero tuve el resultado. El problema es cuando uso el replaceAll así:

EDC = EDC.replaceAll("manages\\(P0,MT0\\)",querypart);

La oración cambia

query(MT0, P0) :- not(managesa), ins_manages(P0,MT0), not(physician(P0)), not(ins_physician(P0))

Supongo que es por paréntesis, pero no pude encontrar ninguna solución para eso. ¿Cuál es la solución?

Respuestas a la pregunta(1)

Su respuesta a la pregunta