括弧付きの文字列とエスケープ文字があります。これらの文字と照合し、それらを削除する必要があります。次のコードでは、matches() と replaceAll() を同じ正規表現で使用していますが、matches() は false を返しますが、replaceAll() は問題なく一致しているように見えます。これは、replaceAll() が実行されて文字が削除されるためです。誰か説明できますか?
String input = "(aaaa)\\b";
boolean matchResult = input.matches("\\(|\\)|\\\\[a-z]+");
System.out.printf("matchResult=%s\n", matchResult);
String output = input.replaceAll("\\(|\\)|\\\\[a-z]+", "");
System.out.printf("INPUT: %s --> OUTPUT: %s\n", input, output);
プリントアウト:
matchResult=false
INPUT: (aaaa) --> OUTPUT: aaaa