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); // 将剩下的字符串附加到sBuffer
System.out.println(sBuffer); // 被替换后的新的字符串
}
正则高级用法-分组group+替换
最新推荐文章于 2024-02-08 16:10:31 发布