博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java的Pattern类
阅读量:6885 次
发布时间:2019-06-27

本文共 2939 字,大约阅读时间需要 9 分钟。

在JDK 1.4中,Java增加了对正则表达式的支持。

java与正则相关的工具主要在java.util.regex包中;此包中主要有两个类:PatternMatcher

下面先说一下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 stub32         System.out.println(s+":  我的名字是:"+name+",我的年龄是:"+age);33     }34     35      36  }37  38  //聊天&唱歌,代理类39  class TalkSing implements Italk40  {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 stub66 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 count        capturingGroupCount = 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

你可能感兴趣的文章
批处理研究(QQ绿化和卸载)
查看>>
对比农行与建行网银业务办理流程
查看>>
Oracle 11G RAC 安装图示(一)
查看>>
【xpghost】xp系统启动后迟延问题如何解决
查看>>
浅谈ElasticSearch的嵌套存储模型
查看>>
离开外包又一段时间了
查看>>
aapt 解析android apk
查看>>
Layout Inflation不能这么用
查看>>
APNS远程推送证书的申请和制作——详细解析
查看>>
mongodb2.6.5--FAQ之分片(sharding)
查看>>
快速搭建Web环境 Angularjs + Express3 + Bootstrap3
查看>>
Android卫星菜单:android-satellite-menu
查看>>
Android 事件机制
查看>>
Sugarnms智和网管软件在煤矿监控系统中的应用
查看>>
Android Recyclerview 简单实用 瀑布流等方式,并加入上下拉加载
查看>>
Linux驱动开发学习日记
查看>>
Python3 中 random模块
查看>>
JS中数组的应用
查看>>
SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)
查看>>
磁盘格式化 ,磁盘挂载, 手动增加swap空间
查看>>