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的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍).如果可能,建议优先采用该类,因为在 ...
随机推荐
- 学习Pytbon第八天,文件的操作
文件的常用操作字符 data=open('月亮代表我的心',encoding='utf-8').read() f=open('月亮代表我的心',encoding='utf-8')#提取内存对象也叫文件 ...
- 问题 B: 分组统计
分组统计 问题 B: 分组统计时间限制: 1 Sec 内存限制: 32 MB 提交: 416 解决: 107 [提交][状态][讨论版][命题人:外部导入] 题目描述 先输入一组数,然后输入其分组,按 ...
- 分治 - 计算几何 - BZOJ2458,[BeiJing2011]最小三角形
http://www.lydsy.com/JudgeOnline/problem.php?id=2458 [BeiJing2011]最小三角形 描述 Frisk现在遇到了一个有趣的问题. 平面上有N个 ...
- Careercup - Microsoft面试题 - 5188169901277184
2014-05-12 06:12 题目链接 原题: Write a function to retrieve the number of a occurrences of a substring(ev ...
- 46、android studio第一次使用时卡在gradle下载怎么解决?
如果没法FQ或者FQ后网速慢,哥教你一个快速解决方案. 在根目录下的.gradle目录下,找到wrapper/dists目录,如果当前正在下载gradle.x.xx-all.zip,那么会发现grad ...
- Android EditText禁止换行键(回车键enter)
在EditText所在的xml文件中,设置android:singleLine="true", 则可以禁止掉虚拟键盘: maxlength为该EditText的最大输入长度: &l ...
- selenium 浏览器驱动下载地址
谷歌浏览器驱动下载http://chromedriver.storage.googleapis.com/index.html 火狐浏览器驱动下载http://ftp.mozilla.org/pub/f ...
- [问题解决]docker启动不了
问题描述:昨天下午整合了同事的代码,发现docker启动好后,docker ps查看不到,docker ps -a发现docker容器没有启动. 尝试多次启动发现都是启动不了. 经过搜索发现 http ...
- ibatis selectKey
<insert id="insert" parameterClass="A"> <selectKey keyProperty="uu ...
- Lua 语法要点
table 默认键值都是从1开始 table array = { "A", "B" } array2 = array array[] = "D&quo ...