为什么第一行没有将“(”替换为空字符串,而第二行却做了?
public static void main(String []args){
String a="This(rab)(bar)";
a=a.replace("\\(",""); //First
String b=a.replaceFirst("\\(","");//Second
System.out.println(a + " "+b);
}
(
不是有效的正则表达式。它不表示“匹配一个开括号”。\(
是一个有效的正则表达式,表示“匹配一个开括号”。在Java字符串字面量中,反斜杠被转义为\\
。 - Sweeper\(
是一个正则表达式,表示“一个左括号”,而replaceFirst
接受一个正则表达式。在正则表达式中,单独的(
有特殊含义 - 开始一个捕获组,所以你需要用\
转义它来表示“一个左括号”。@ErikNouroyan - Sweeper