直接上例子:

package com.dajiangtai.djt_spider.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MatcherTest {
public static void main(String[] args)
throws Exception {
//生成Pattern对象并且编译一个简单的正则表达式"Kelvin"
Pattern p = Pattern.compile("Kelvin");
//用Pattern类的matcher()方法生成一个Matcher对象
Matcher m = p.matcher("Kelvin Li and Kelvin Chan are both working in Kelvin Chen's KelvinSoftShop company");
StringBuffer sb = new StringBuffer();
int i=0;
//使用find()方法查找第一个匹配的对象
boolean result = m.find();
//使用循环将句子里所有的kelvin找出并替换再将内容加到sb里
while(result) {
i++;
m.appendReplacement(sb, "Kevin");
System.out.println("第"+i+"次匹配后sb的内容是:"+sb);
//继续查找下一个匹配对象
result = m.find();
}
//最后调用appendTail()方法将最后一次匹配后的剩余字符串加到sb里;
m.appendTail(sb);
System.out.println("调用m.appendTail(sb)后sb的最终内容是:"+ sb.toString());
}

}

输出:

第1次匹配后sb的内容是:Kevin
第2次匹配后sb的内容是:Kevin Li and Kevin
第3次匹配后sb的内容是:Kevin Li and Kevin Chan are both working in Kevin
第4次匹配后sb的内容是:Kevin Li and Kevin Chan are both working in Kevin Chen's Kevin
调用m.appendTail(sb)后sb的最终内容是:Kevin Li and Kevin Chan are both working in Kevin Chen's KevinSoftShop company

用法说明:

String replaceAll(String replacement) 
将目标字符串里与既有模式相匹配的子串全部替换为指定的字符串。 
String replaceFirst(String replacement) 
将目标字符串里第一个与既有模式相匹配的子串替换为指定的字符串。

appendReplacement(StringBuffer sb, String replacement) 将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里,而appendTail(StringBuffer sb) 方法则将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。 
例如,有字符串fatcatfatcatfat,假设既有正则表达式模式为"cat",第一次匹配后调用appendReplacement(sb,"dog"),那么这时StringBuffer sb的内容为fatdog,也就是fatcat中的cat被替换为dog并且与匹配子串前的内容加到sb里,而第二次匹配后调用appendReplacement(sb,"dog"),那么sb的内容就变为fatdogfatdog,如果最后再调用一次appendTail(sb),那么sb最终的内容将是fatdogfatdogfat。

最新文章

  1. 禁用Win10显卡更新
  2. 传统BIOS+UEFI 系统引导修复
  3. python中多线程与非线程的执行性能对比
  4. (08)odoo继承机制
  5. spring学习笔记---第三方SDK(Rest API)和Jaskson的巧用
  6. 如何建立一个“绑定友好的”usercontrol--wpf
  7. delphi 完全控制Excel 文件
  8. What does it mean for an algorithm to be fair
  9. jdbc oracle 连接字符串
  10. android中使用setVideoURI()播放视频
  11. 制作Orcad的变种BOM(Variant BOM)
  12. Java静态字段(属性、方法、类别)
  13. JAVA课程设计猜数游戏 个人
  14. 基于web的网上书城系统开发-----需求分析
  15. Qt Creator简单计算器的Demo
  16. 深入理解PHP之require/include顺序
  17. 基于Android的手机程序----口袋理财(13年版)
  18. 微信小程序——地图
  19. JS中----this的指向和如何修改this的指向
  20. 关于org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Incorrect string value: '\xE5\x91\xBC\xE5\x92\x8C...' for column 'visit_addr' at row 1的问题

热门文章

  1. 【BZOJ2229】[Zjoi2011]最小割 最小割树
  2. 九度OJ 1062:分段函数 (基础题)
  3. A good example is a User-Agent switcher which changes User-Agent on every request:
  4. HTML 学习笔记 JQuery(盒子操作)
  5. DAICO模式到底是什么?
  6. Mac root Operation not permitted
  7. centos7 执行一个数据库脚本创建项目中的数据库
  8. [BZOJ 1095] [ZJOI 2007]Hide 捉迷藏
  9. SDOI 2017 Day1
  10. Spring Boot2.0之注解方式启动Springmvc