我有这样一行:

BlockedMatch(XA, YB), Correlation(XA, QC), Correlation(YB, QC), Correlation(QC, YB)

我希望它看起来像这样:
BlockedMatch(XAYB), Correlation(XAQC), Correlation(YBQC), Correlation(QCYB)

我不能只对“,”进行替换,因为它将删除括号之外的那些实例。

我尝试了这个:
replaceAll("\\((.*?)\\)", "")

它会替换括号内的所有内容(而不仅仅是逗号)。我试图将逗号和空格组合仅添加到该正则表达式中,但那时似乎并没有删除任何内容。

有人可以告诉我如何指定仅在括号内出现时删除", "(逗号空间)吗?

最佳答案

使用前瞻:

str = str.replaceAll(", (?=[^(]*\\))", "");

这个正则表达式说:“仅当下一个方括号字符为右括号时才替换逗号空间”

一些测试代码:
String str = "BlockedMatch(XA, YB), Correlation(XA, QC), Correlation(YB, QC), Correlation(QC, YB)";
str = str.replaceAll(", (?=[^(]*\\))", "");
System.out.println(str);

输出:
BlockedMatch(XAYB), Correlation(XAQC), Correlation(YBQC), Correlation(QCYB)

10-04 16:02