使用括号replaceAll方法Java

我想在一个句子中改变一个单词,但这个单词有括号。 我把它保存在String变量中。 在变量st里面我有

manages(P0,MT0)

在其他String变量DES内部,我有以下句子:

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

所以我有另一个字符串变量querypart存储新单词:

managesa

我在代码中尝试的是:

 EDC = EDC.replaceAll(st,querypart); 

但它不起作用。

我认为问题可能是paranthesis,所以我像st变量一样更改了字符串:

manages\\(P0,MT0\\)

然后我试了

 EDC = EDC.replaceAll(st,querypart); 

但我得到了一些结果。 问题是当我像这样使用replaceAll时:

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

句子改变了

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

我想这是因为括号,但我找不到任何解决方案呢? 解决办法是什么?

我相信你想使用String#replace() (而不是replaceAll ),这个

 String EDC = "query(MT0, P0) :- not(manages(P0,MT0)), " + "ins_manages(P0,MT0), not(physician(P0)), not(ins_physician(P0))"; String queryPart = "managesa"; EDC = EDC.replace("manages(P0,MT0)", queryPart); System.out.println(EDC); 

输出是

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