我有这样一行:
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)