java的Pattern类
在JDK 1.4中,Java增加了对正则表达式的支持。
java与正则相关的工具主要在java.util.regex包中;此包中主要有两个类:Pattern、Matcher。
下面先说一下Pattern类:
public final class Pattern implements java.io.Serializable
Pattern类由final修饰,可知其不可被继承,代理模式(java23种常用设计模式之一)类,正则表达式的编译表示形式。
注意:此类的实例是不可变的,可供多个并发线程安全使用。
代理模式简单的理解就是有一群人只会说话,但在这群人中有些人会唱歌,所以要添加代理类唱歌。但如果要在原先的实现类加上唱歌的方法就会让代码重用性低,耦合性高。这时用代理的方法则很好的解决了这个问题。
(引用网上例子)假设有一个Italk接口,有空的方法talk()(说话),所有的OnlyTalk对象都实现(implements)这个接口,实现talk()方法,前端有很多地方都将OnlyTalk实例化,执行talk方法,后来发现这些前端里有一些除了要说话以外还要唱歌(sing),那么我们既不能在Italk接口里增加sing()方法,又不能在每个前端都增加sing方法,我们只有增加一个代理类TalkSing,这个代理类里实现talk和sing方法,然后在需要sing方法的客户端调用代理类即可,代码如下:
1 interface Italk 2 { 3 4 public void talk(String st); 5 } 6 7 //Italk实现类 8 class OnlyTalk implements Italk 9 { 10 public String name; 11 public int age; 12 public String getName() { 13 return name; 14 } 15 public void setName(String name) { 16 this.name = name; 17 } 18 public int getAge() { 19 return age; 20 } 21 public void setAge(int age) { 22 this.age = age; 23 } 24 public OnlyTalk(String name,int age) 25 { 26 this.name=name; 27 this.age = age; 28 } 29 30 public void talk(String s) { 31 // TODO Auto-generated method stub 32 System.out.println(s+": 我的名字是:"+name+",我的年龄是:"+age); 33 } 34 35 36 } 37 38 //聊天&唱歌,代理类 39 class TalkSing implements Italk 40 { 41 OnlyTalk talker; 42 public String song; 43 public TalkSing(OnlyTalk talker) 44 { 45 this.talker=talker; 46 } 47 public void talk(String ss) 48 { 49 talker.talk(ss); 50 } 51 public void talk(String ss,String song) 52 { 53 talker.talk(ss); 54 sing(song); 55 } 56 private void sing(String song) 57 { 58 System.out.println("我唱的是"+song+"歌"); 59 } 60 } 61 //应用端 62 public class SingTalk { 63 64 public static void main(String[] args) { 65 // TODO Auto-generated method stub 66 67 OnlyTalk people = new OnlyTalk("华为",20); 68 people.talk("没有代理"); 69 System.out.println(); 70 TalkSing peopleplus = new TalkSing(people); 71 peopleplus.talk("添加代理", "好运来"); 72 } 73 74 }
获得Pattern实例方法,Pattern构造方法是私有的,因此不能通过new创建实例。
//Pattern构造器: private Pattern(String p, int f) {pattern = p;flags = f;// Reset group index countcapturingGroupCount = 1;localCount = 0;if (pattern.length() > 0) {compile();} else {root = new Start(lastAccept);matchRoot = lastAccept;}}
由下面方法可得Pattern实例,利用compile()返回Pattern实例:Pattern pattern = Pattern.compile(String regex);
方法一: public static Pattern compile(String regex) {return new Pattern(regex, 0);} 方法二:public static Pattern compile(String regex, int flags) {return new Pattern(regex, flags);}
转载于:https://www.cnblogs.com/changhe1995/articles/10367564.html
java的Pattern类相关推荐
- Java通过Pattern类使用正则表达式
java正则表达式-java.util.regex.Pattern类判断指定数据 代码示例: 1 /** 2 * 判断字符串是否是数字 3 */ 4 @Test 5 public void testI ...
- java之Pattern类详解
在JDK 1.4中,Java增加了对正则表达式的支持. java与正则相关的工具主要在java.util.regex包中:此包中主要有两个类:Pattern.Matcher. Pattern 声明: ...
- JAVA正则表达式:Pattern类与Matcher类详解(转)
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...
- JAVA正则表达式:Pattern类与Matcher类详解
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...
- java正则表达式对象_Java正则表达式之Pattern类
java.util.regex.Pattern类指正则表达式的编译表示形式.即将你的正则表达式字符串编译成java正则表达式对象.所有的正则表达式字符串在使用前都必须先编译成Pattern类的实例.然 ...
- Java Pattern类的用法详解(正则表达式)
转载于:https://www.cnblogs.com/sparkbj/articles/6207103.html 正则表达式的编译表示形式. 指定为字符串的正则表达式必须首先被编译为此类的实例.然后 ...
- 第三次学JAVA再学不好就吃翔(part66)--Pattern类和Matcher类
学习笔记,仅供参考 文章目录 Pattern类 典型的调用顺序 Pattern类的compile方法 Pattern类的matcher方法 Matcher类的matches方法 Matcher类 fi ...
- Java Pattern类和Matcher类的使用
java.util.regex 是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern 和 Matcher. Pattern 对象是正则表达式编译后在内存中的表示形 ...
- java 正则 pattern 线程安全_(一)Java Pattern类----java正则
记下一些知识..... Java Pattern类 Pattern在java.util.regex包中,是正则表达式的编译表示形式,此类的实例是不可变的,可供多个并发线程安全使用. 定义 public ...
最新文章
- bootstrap modal 弹出效果
- 在web项目中发布jaxws
- oracle 德文符号处理_南沙区专业高效的化妆废水处理操作简单
- PAT 乙级 1003. 我要通过!(20) Java版
- Eclipse常用快捷键【转】
- python3语法学习第四天--序列
- C语言的风花雪夜(C语言下雪动画)
- 点云应用——三维空间边界点排序+机器人轨迹引导(1)
- SD和SDHC和SDXC卡的区别, class与u1/u3关系
- 大雨瓢泼!多地告急!告诉你雨天行车的全部秘密。
- java 实现office转换pdf
- SQL常用脚本整理,建议收藏
- java.sql.SQLException: 无效的列类型: getLong not implemented for class oracle.jdbc.driver.T4CRowidAccessor
- 嵌入式(二十):并行接口
- 楼宇自控BACnet/IP协议网关功能特点
- C++11-列表初始化/变量类型推导/范围for/finaloverride/默认成员函数控制
- OSM数据如何下载使用(地图数据篇.11)
- 四十三、迎接挑战,苦练内功,迎接春天的到来
- 软件测试周刊(第43期):如果你过普通生活过了很久,只要你稍微努点力,你就以为拼尽了全力,其实不是的。
- MathWorks官方MATLAB/Simulink基础入门视频教程 笔记(Simulink基础)