matcher.appendReplacement() 与 matcher.appendTail()的区别
? ? ? ? ?matcher.appendReplacement() 与 matcher.appendTail()的区别
要说明这两个方法的区别最简单也最直接的方法就是上例子:
package com.it.test;
?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
?
public class regex_test2 {
?
public static void main(String args[]) {
String mail = "abcabcA@163.com";
Pattern pattern = Pattern.compile("a",Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(mail);
StringBuffer sb = new StringBuffer();
while(m.find())
m.appendReplacement(sb, "b");
//m.appendTail(sb); //注视掉这句的结果是bbcbbcb
System.out.println(sb.toString()); //不注释掉上句的结果是bbcbbcb@163.com
}
?
}
简单的讲讲,用matcher.appendReplacement(?sb, "b")就是在Matcher.find()找到匹配的地方用“b”替换掉然后加进StringBuffer中去,这时后面可能还有字符串但是不匹配的,就像例子中@163.com是匹配到最后一个a结束的地方如果这时输出就是bbcbbcb。?matcher.appendTail()就是把@163.com加上而已
?
文章来自:http://superior-lyh.iteye.com/blog/2257733