public static void main(String[] args) {Pattern patternTest=Pattern.compile("c\\(a\\)\\(t\\(2\\)\\)");Matcher matcherTest=patternTest.matcher("c(a)(t(2))");System.out.println(matcherTest.matches()); // 全部匹配System.out.println();patternTest=Pattern.compile("c(a)(t(2)1)");matcherTest=patternTest.matcher("1ccat21ei2)(2ecat21dqwdqd");StringBuffer sBuffer=new StringBuffer();while (matcherTest.find()) { // 部分匹配System.out.println( matcherTest.group()); // 等同于 matcherTest.group(0),匹配到的字符串System.out.println( matcherTest.start()+" : "+matcherTest.end()); //匹配到的字符串的开始索引和结束索引System.out.println( matcherTest.groupCount()); //匹配到的字符串的所有分组的数量( 分组就是子表达式)System.out.println( matcherTest.group(1)); //匹配到的字符串的第一个分组System.out.println( matcherTest.start(1)+" : "+matcherTest.end(1)); //第一个分组的开始索引和结束索引System.out.println( matcherTest.group(2));//第二个分组System.out.println( matcherTest.group(3));//第三个分组matcherTest.appendReplacement(sBuffer,"111"); // 部分匹配中的替换操作System.out.println(sBuffer);System.out.println();}matcherTest.appendTail(sBuffer); // 将剩下的字符串附加到sBufferSystem.out.println(sBuffer); // 被替换后的新的字符串}