设计者模式&正则表达式

设计者模式&正则表达式

1.设计者模式

单例模式: 只有一个实例,保证当前类的对象只能有一个

1、单例模式实现:

​ 1.懒汉式 : 当第一次调用方法获取对象时候,该对象才 创建

​ 2.饿汉式 : 第一次加载类时候,就自动创建该对象

2、实现单例的步骤:

​ 1.构造器私有化

​ 2.私有的静态的该类的引用,存储创建的单例对象

​ 3.公共静态的访问方式(提供一个当前类的对象)

3、在多线程同时访问下,懒汉式会出现获取不同对象的现象,为了安全,使用Synchronized 同步方法

​ 1.Synchronized定义在方法上,使用简单,但是效率较低

​ 2.Synchronized包裹需要同步的代码,使用相对复杂,需要思考包裹哪些代码,但是效率较高。

简单工厂模式

​ 1.抽象产品角色: 具体产品角色实现的接口|继承的父类

​ 2.具体产品角色: 抽象类的实现类

​ 3.工厂角色

代理模式:

静态代理:

​ 真实角色(项目经理,房东)

​ 代理角色(HR,中介…)

​ 真实角色与代理角色持有相同的接口

​ 代理角色持有真实角色的引用: 引用关系通过属性维护

​ 代理行为

2.正则表达式

正则表达式:

正则表达式就是一种特殊的字符串规则,用于匹配字符串使用的

使用正则的要求:

1.明确需求

2.定义正则

3.在语言中使用,在代码中使用

字符集
默认情况下区分大小写。

1.普通字符
非特殊含义以外的字符,如 a b 中国 上海尚学堂 。 普通字符精确匹配
5.2. 元字符与转义
5.3. 字符类
5.3.1. 自定义
由[]组,只匹配一个, 需要注意以下四个:
^: 如果在第一个位置,表示取反的含义。
-表示一个区间即范围
] 最近一个位置为:结束 ,如果要表示普通的]请加
\ 转义
. 在字符类中 不是代表任意的字符,代表自身 . 的含义。 如果需要表示原有的含义,挪动位置 或者\ 。
[ae134] -> a e 1 3 4
[(as)] ->a s ( )
[a-z] ->小写字母
[-]a-z[] -> -[] 及小写字母
默认|标准字符类

  1. 量词
    匹配的过程中,需要指定次数

  2. 贪婪模式
    在匹配次数不定时如* {n,} +,匹配字符越多越好,默认模式即”贪婪模
    贪婪模式 greedy(匹配字符越多越好,可回溯)

  3. ?懒惰模式 lazy reluctant (匹配字符越少越好,可回溯)

  4. +独占模式 possessive(匹配字符越多越好,不可回溯) 用的较少
    阻止贪婪有两种方式
    1、 量词后面使用? 2、 使用取反。

  5. 边界
    1)、边界不占用宽度,只是一个界限
    2)、^ :开始 \b:单词边界 \B:非单词边界 $:结束
    ^:多行代表每行头 单行代表整个字符串的开始
    $: 多行代表每行尾 单行代表字符串的结尾
    \b 匹配前面或后面的不是\w
    \B 匹配前面或后面的是\w

  6. 选择符
    9.1. 选择符
    | ->优先级低 ,满足匹配则停止,不会查找更优的方案
    he|hello –>只匹配 he,不匹配 hello
    hello|he->匹配 he 与 hello

  7. 零宽断言

    (\w+)(?<=ing) –>匹配 singing testing 整个单词 -> 后顾 
    (\w+)(?=ing) -->匹配 sing test ->前瞻
    
  8. 常用类
    java.util.regex Pattern Matcher String
    一般在查找、替换、分割、组的使用
    Pattern
    Matcher

 //模式器对象 指定使用的正则表达式
 Pattern p = Pattern.compile("(\\d{3})(sxt)");
 
 //获取匹配器 指定要匹配的字符串
 Matcher matcher = p.matcher("123sxt456sxt7890sxthaha");
		 
//matches 精确完整匹配
System.out.println(matcher.matches());  //false

//find 查找是否有满足条件的子串,如果纯在就返回true,可以继续查找,直到找不到
while(matcher.find()) { 

	System.out.println(matcher.group()); 
	
//group(int) 参数要求正则中有分组情况,可以选择获取当前匹配到子串中某一组中内容

	System.out.println(matcher.group(0)+"-->"+matcher.group(1)+"-->"+matcher.group(2));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值