正则表达式

1.5 网络协议

网络架构 : B/S C/S
B/S : Browser/Server 基于浏览器的服务器应用,比如网页版淘宝
C/S : Client/Server 基于客户端的服务器应用,比如安装的淘宝APP
TCP : 能重传,不丢包,如果丢失的话,会记录下来,重新发送,但是不会重复发送 可靠, 有序 ;
保证顺序不会乱,比如发送123,2丢失了会重传,接收到的就成了132,但是 你看到的一定是123 面向连接 : 如果连接不上,数据不会发送,简称三次握手
类似于打电话,如果打不通,消息是传递不过去的
UDP : 速度快,不保证可靠,可能丢包,无连接,相当于发短信

2 正则表达式

2.1 概述

正则表达式 定义了字符串的模式,可以用来搜索,编辑,处理文本,并不仅限于某一种语言
但是在每种语言中也会有细微的差别
jdk1.4推出正则表达式, 保存在java.util.regex包下

2.2 语法

正则表达式常用语法 : 
        \ : 转移符,把有意义字符转换为无意义字符

        ^ : 表示开始,以xxx打头
        $ : 表示结束
        一般想要强制全词匹配的时候,才加^和$

(.) : 任意字符组成
        \\1 获取前面组中的数据
        (\\d)\\1 : 表示两个连续出现的数字, 比如 11,22,33,44
        (\\d)(a)\\1 : 表示 第一个和第三个是相同的数字,且数字中间有个a ,1a1,9a9
        (\\d)(a)\\2 : 表示 第一个是数字,第二个和第三个都是a,1aa,3aa


        范围相关
                [abc] : 可能是a,可能是b,也可能是c    
                [a-z] : 可以匹配到小写字母
                [A-Za-z] : 可以匹配到大小写字母
                [A-Za-z0-9] : 大小写字母和数字
                [0-9] : 匹配数字   
                [^0-9] : 匹配不是数字
        简洁表示方式
                . : 匹配任意字符,如果想匹配 .  需要转义 \.
                \d : 表示数字  等价于 [0-9]
                \D : 并表示非数字 [^0-9]
                \s : 表示由空字符组成
                \S : 表示非空
                \w : 表示字母,数字,下划线 [0-9a-zA-Z_]
                \W : 表示非字母数字下划线
        数量相关 : 
                ? : 表示出现0次或1次
                + : 表示出现1次或多次,大于等于1
                * : 大于等于0
                {n} : 表示出现n次 , [0-9]{6} : 表示出现6位数字
                {n,} : 表示出现n次或n次以上 , 就是大于等于n , \d{6,} : 表示出现至少6个数字
                {n,m} : 表示出现n到m次 , \d{6,9} : 表示出现6到9个数字
                | : 或 , x|y 表示出现x或者是y
                () : 子表达式,看做一个整体
2.3 java中的正则表达式

java中有三个正则表达式相关的类
         PatternSyntaxException : 正则表达式异常类
         Pattern : 正则表达式类
         Matcher : 支持较强大的正则表达式匹配操作    
 实际操作中,有时候简单的校验操作,可以直接使用String的
         验证 : boolean matches(String regex)
         拆分 : String[] split(String regex)
         替换 : String replacaAll(String regex,String str)

java.util.regex包

PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误

2.3.1 Pattern

用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建

可以通过Pattern.complie(String regex)创建一个正则表达式·

只能做一些简单的匹配操作

2.3.2 Matcher

构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例 Matcher m = p.matcher("aaaaab");

支持便捷强大的正则匹配操作,包括分组、多次匹配支持

2.3.2.1 字符串匹配

Matcher.matches():对整个字符串进行匹配,只有整个字符串都匹配了才返回true

Matcher.lookingAt():对前面的字符串进行匹配,只有匹配到的字符串在最前面才返回true

Matcher.find():对字符串进行匹配,匹配到的字符串可以在任何位置

2.3.2.2 数据提取

group : find和group一起使用,可以做到数据提取

group() 和 group(0) 都是提取匹配到的数据

group(1) 就是第一组数据(第一个小括号) , group(2) 就是第二组数据

System.out.println(matcher.group());

2.3.2.3 叠词去重

String regex = "(.)(\\1+)";

input = input.replaceAll(regex, "$1");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值