Matcher类详解
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。
它包括两个类:Pattern和Matcher 。
Pattern: 一个Pattern是一个正则表达式经编译后的表现模式。
Matcher: 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。
首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");//输入序列
StringBuffer sb = new StringBuffer();
while (m.find()) {
System.out.println("以前匹配的初始索引---" + m.start());
System.out.println("最后匹配位置的索引---" + m.end());
m.appendReplacement(sb, "dog");//第一次匹配后添加位置变为8,第二次匹配后添加位置变为16
System.out.println("sb="+sb);
}
m.appendTail(sb);//
System.out.println(sb.toString());
-------------------------输出---------------------------------------------------------------------
以前匹配的初始索引---4
最后匹配位置的索引---7
sb=one dog
以前匹配的初始索引---12
最后匹配位置的索引---15
sb=one dog two dog
one dog two dogs in the yard
1. public Matcher appendReplacement(StringBuffer sb, String replacement)
sb -- 字符串缓冲区
replacement -- 替换字符串
该方法做3件事:
1. 它从添加位置开始在输入序列读取字符,并将其添加到给定字符串缓冲区。
在读取以前匹配之前的最后字符(即位于索引 start() - 1 处的字符)之后,它就会停止。
即将匹配字符串之前的所有字符添加到缓冲区。 2. 它将给定替换字符串添加到字符串缓冲区。 即将replacement添加到缓冲区。 3. 它将此匹配器的添加位置设置为最后匹配位置的索引加 1,即 end()。进行下一次匹配。
注:字符串缓冲区会已记录一个添加位置,从0开始。做完以上3件事以后,字符串缓冲区的添加位置设置为最后匹配位置的索引加1即匹配到的字符串结束位置加1.
2. public StringBuffer appendTail(StringBuffer sb)
sb -- 目标字符串缓冲区
此方法从添加位置开始从输入序列读取字符,并将其添加到给定字符串缓冲区。可以在一次或多次调用 appendReplacement 方法后调用它来复制剩余的输入序列。
注:appendReplacement替换完所有的字符串以后,输入序列的剩余字符从添加位置添加到字符串缓冲区。
Matcher类详解的更多相关文章
- java之Matcher类详解
在JDK 1.4中,Java增加了对正则表达式的支持. java与正则相关的工具主要在java.util.regex包中:此包中主要有两个类:Pattern.Matcher. Matcher 声明: ...
- JAVA正则表达式:Pattern类与Matcher类详解(转)
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...
- 正则表达式:Pattern类与Matcher类详解
一.捕获组的概念 捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的.例如,在表达式((A)(B(C)))中,存在四个这样的组: 1 ((A)(B(C))) 2 (A) 3 ...
- JAVA正则表达式:Pattern类与Matcher类详解
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...
- [转] JAVA正则表达式:Pattern类与Matcher类详解(转)
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和 Matcher Pattern 一个Pattern是一个正则表达式经编译后的 ...
- Matcher类详解2-group
Matcher.group是针对()来说的,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西即匹配的第一个子表达式,group(2)指的第二个括号里的东西即匹配的第二个子表达 ...
- java之StringBuffer类详解
StringBuffer 线程安全的可变字符序列. StringBuffer源码分析(JDK1.6): public final class StringBuffer extends Abstract ...
- java之AbstractStringBuilder类详解
目录 AbstractStringBuilder类 字段 构造器 方法 public abstract String toString() 扩充容量 void expandCapacity(in ...
- java之StringBuilder类详解
StringBuilder 非线程安全的可变字符序列 .该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍).如果可能,建议优先采用该类,因为在 ...
随机推荐
- ZendFramework-2.4 源代码 - 关于MVC - Controller层
// 1.控制器管理器 class ServiceManager implements ServiceLocatorInterface { public function __construct(Co ...
- Ecshop之ajax修改表里的状态(函数化处理)
目录 功能: 效果: 思路: 页面里 控制器里 功能: `点击图片,修改表里的状态值` 效果: 思路: 页面里在img里点绑定onclick件事,调用js函数listTable.toggle oncl ...
- 第15课 栏目的排序处理(组件化) Thinkphp5商城第四季
目录 要实现的功能 思路: 视图层 控制器里: 扩展函数里 要实现的功能 用表单里的提交过来的sort数据,批量修改表里的排序值 界面效果: 思路: 视图层表单提交数据主键=>sort值 控制器 ...
- 关于debug
2019-04-05 11:18:15 1. debug 需巧用两个工具 1.1 用‘#’把感觉会出错的代码段注释掉 多行注释有两种快捷操作: 在需要注释的多行代码块前后加一组三引号''' 选中代 ...
- Windows Server 2008 正式版下载汇总
windows 2008是微软推出的新一代服务器专用系统版本, 具有良好的用户体验以及应用程序,windows 2008大幅提升了web服务以及应用程序的性能, 让企业在提供和维护资源服务的时候更加得 ...
- CCPC 2016-2017, Finals
A. HDU 5999 The Third Cup is Free 简单模拟. B. HDU 6000 Wash n 件衣服, m 个洗衣机,k 个烘干机.每个洗衣机和烘干机需要不同的时间.问 n 件 ...
- Git add命令
git add -A和 git add . git add -u在功能上看似很相近,但还是存在一点差别 git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文 ...
- 二叉树的镜像(Python实现)
题目 给定一棵二叉树,要求输出其左右翻转后二叉树的中序遍历. 例: 翻转前: 翻转后: 1 | 1 / \ | / \ 2 3 | 3 2 / \ | / \ 4 5 | 5 4 解析 两个步骤: 镜 ...
- 笔记-python-lib-re
笔记-python-lib-re 1. re模块简介 re模块提供了与perl类似的正则匹配功能. 要搜索的模式和字符串都可以是Unicode字符串(str)以及8位字符串(bytes).但 ...
- java中equals和==区别
equals 方法是 java.lang.Object 类的方法. 有两种用法说明: (1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同. “==”比较两个变 ...