Pattern和Matcher
来源:互联网 发布:兰州大学怎么样知乎 编辑:程序博客网 时间:2024/06/03 19:45
jdk中文文档地址: http://www.javaweb.cc/help/JavaAPI1.6/java/util/regex/Pattern.html
基础实现
1. Pattern直接匹配
优点:比较方便、简洁
缺点:模式不能重复使用,使用方式比较单一
boolean b = Pattern.matches("正则表达式规则", "需要匹配的字符串");
2. Matcher匹配
优点:模式可以重复使用,创建多个Matcher。Pattern可以加入需要的属性,Matcher有多种匹配方式和很多内置方法,更灵活、更强大。
缺点:在只需要匹配一次的简单应用上,Pattern直接匹配开销更少
Pattern p = Pattern.compile("正则表达式规则"); Matcher m = p.matcher("需要匹配的字符串"); boolean b = m.matches();
相关知识归纳
Matcher的find(),matches(),lookingAt()方法的区别
- matches()
方法尝试将整个输入序列与该模式匹配。相当于正则加上了边界匹配器符号^& - lookingAt()
尝试将输入序列从头开始与该模式匹配。 相当于正则加上了边界匹配器符号^ - find()
方法扫描输入序列以查找与该模式匹配的下一个子序列。
String matchStr = "zxbzxbzxb"; String reg = "zxb"; Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(matchStr); // matches() //System.out.println(matcher.matches());// false,匹配整个输入序列不成功 //System.out.println(matcher.start());// 匹配失败,IllegalStateException异常 //System.out.println(matcher.end());// 匹配失败,IllegalStateException异常 // lookingAt() //System.out.println(matcher.lookingAt());// true 从头开始匹配匹配成功 //System.out.println(matcher.start());// 0 //System.out.println(matcher.end());// 3 // find() System.out.println(matcher.find());// 匹配成功 System.out.println(matcher.start());// 0 System.out.println(matcher.end());// 3
Matcher使用find()注意点
- 匹配开始位置
此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。
String matchStr = "zxb"; String reg = "zxb"; Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(matchStr); System.out.println("lookingAt()"); System.out.println(matcher.lookingAt()); System.out.println(matcher.start()); System.out.println(matcher.end()); System.out.println("matches()"); System.out.println(matcher.matches()); System.out.println(matcher.start()); System.out.println(matcher.end());// 3 // 从上一次匹配结果结束位置(matcher.end();// 3)开始,已经超出了输入字符传的范围 System.out.println("find()"); System.out.println(matcher.find());// false System.out.println(matcher.start());// 匹配失败,IllegalStateException异常 System.out.println(matcher.end());// 匹配失败,IllegalStateException异常 //matcher.reset();// 重置匹配位置,从头开始匹配 也可以使用region(s,e)来设置匹配范围 //System.out.println("find()"); //System.out.println(matcher.find());// true //System.out.println(matcher.start());// 0 //System.out.println(matcher.end());// 3
返回结果:
lookingAt()
true
0
3
matches()
true
0
3
find()
false
0 0
- Pattern和Matcher
- 正则 Pattern和Matcher
- Pattern和Matcher详解
- Pattern和Matcher
- 正则pattern和matcher
- Pattern和Matcher类
- Pattern和Matcher详解
- Pattern 和 Matcher
- Pattern和Matcher
- Java Pattern和Matcher简介
- Pattern和Matcher的用法
- Pattern和Matcher 的用法
- Pattern和Matcher简单用法
- java Pattern和Matcher详解
- Pattern和Matcher结合使用
- java Pattern和Matcher详解
- java Pattern和Matcher详解
- java Pattern和Matcher详解
- 【剑指Offer】替换空格 解题报告
- Linux安装MySQL
- iOS开发 各种路径记录
- JS中&&和||的用法理解
- HTTP 方法:GET 对比 POST
- Pattern和Matcher
- VIRTUALBOX 虚拟机安装 OS X 10.9 MAVERICKS
- Java开发指南
- loadrunner录制webservice接口需要用户名密码时的解决方法
- selenium webdriver自动化对日期控件的处理
- Linux下安装DB2_v9.7详细教程
- windows下命令行打jar包方法
- CAS客户端服务器端配置步骤
- LR常见问题整理