一、正则表达式基本组成和概念   Regular Expression

正则表达式    是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。

Pattern:正则表达式对象(匹配类型)
Matcher:匹配器(按照Pattern模式进行匹配)

//regexp为待匹配正则表达式类型

//sts为待匹配的字符串

1.输出sts中匹配到regstring类型的字符串

Pattern pat = Pattern.compile(regexp);
Matcher mat = pattern.matcher(sts)
while(mat.find()){//进行匹配
        System.out.println(mat.group(n)); //n
}

2.判断待匹配的字符串sts是否为regstring类型

boolean f =  Pattern.matches(regexp,sts);

二、正则表达式核心方法

1.matcher.find():是一个Boolean类型的方法,在sts字符串中匹配到就返回一个true,未匹配到就返回false
2.matcher.group(int n):matcher中有一个groups[]数组
                                1)group(0):return sts.substring(groups[0] ,groups[1])//截取groups[0]~groups[1]之间的字符(groups[1]索引位置不取)
                                   ……group(1),group(2)……以此类推;
                                   group(n):return sts.substring(groups[n*2] ,groups[n*2+1])
                                                 //n=0,输出匹配字符串;0<n<=分组数(regstring中的括号数),输出匹配字符串中第n个分组字符串
                                2)groups[0]:表示循环一次后匹配对象首个字符的索引位置    
                                   groups[1]:最后一个字符的索引位置加一, 同时会记录oldLast的值,   oldLast=groups(1),用来标记已经匹配到的位置,第二次匹配从oldLast开始,
                                                     
                                3)groups[2]:第一个分组匹配的开始索引位置
                                   groups[3]:第二个分组匹配的结束索引位置加一
                                4)……同理,第三组开始索引位置,结束索引位置,第四组……以此类推

三、regstring(正则表达式)匹配类型

1.\\d表示任意一个数字
1)\\d\\d\\d\\d 表示连续四个数字的模式
2)(\\d\\d)(\\d\\d) 第一给()代表一号分组;第二个()代表二号分组

四、元字符

(下面讲的字符没特殊指定,既可以是单个字符也可以是字符串)
1.限定符(Java中限定符的使用都是默认为贪婪匹配的)
1)*:指定字符可以重复0到n次                         eg:123*                       \\12必须有,12后面的3可以是任意个(指定字符是指距离它最近的字符,有括号就是括号里面的字符)2)+:指定字符可以重复1到n次                          eg:s+                            \\ 匹配至少一个空格字符
3)?:指定字符可以重复0到1次                                                               \\?指定的字符可要可不要 
4){n}:指定字符重复n次                                  eg: [0-9]{11}                 \\匹配的字符是以0到9之间(包含0和9) 的数组成的长度为11的字符串  
5){n,} :指定字符至少有n个                               eg:[0-9]{2,}                    \\匹配的字符是以0到9之间的数组成,长度至少是2
6){k,n}:指定字符至少有k个,最多不超过n个     eg:[0-9]{3,4}                  \\匹配的字符可以是:000,1234……当strs只有1234时,Java中默认贪婪匹配(尽可能匹配的更多),只输出1234

2.选择匹配符
1)|:选择匹配符                                  eg:王者荣耀|王者农药     \\匹配的内容中只要有”王者荣“或                                                                                                        者”王者农药 “都会匹配成功

3.分组组合和反向引用符

4.特殊字符
*转义号:\\(java中是两个\\代表转义号)
             当我们使用正则表达式去匹配一些特殊字符('.','*','+','(',')','\','/','?','[',']','^','{','}')时,需要用到转义号,否则匹配不到结果,甚至会报错
             其他的可以不用转义号  eg:regstring = " "等价于regstring = "\\s"

5.字符匹配符
1)[]:可接收的字符列表                                       eg:[abcd]            \\可以接收a 、b、c、d中的任                                                                                                           意 一个字符
2)[^]:不接收的字符列表                                       eg:[^abbcd]         \\除了a、b、c、d四个字符其他                                                                                                           的字符都可以
3)-:连字符(数字范围是0-9)                                                        eg:a-z              \\可以是a到z之间(包括a和z)                                                                                                           的任意字符?大小排序有要求吗?
4).:匹配除‘\n’外的任意单个字符                     eg:a..b                  \\以a开始以b结束,中间可以是                                                                                                           除‘\n’外的任意两个字符
5)\\d:匹配当数字字符(相当于[0-9])             eg:\\d{3}(\\d)?     \\包含三个或四个数字字符  
6)\\D:匹配单个非数字字符(相当于[^0-9])    eg:\\D(\\d)*         \\以单个非数字字符开始,后接                                                                                                          任意个数字字符   
7)\\w:匹配单个数字、大小写字母(相当于[0-9a-zA-Z])                
8)\\W:与7)相反,相当于相当于[^0-9a-zA-Z]   eg:\\W+\\d{3}    \\以至少一个非数字、字母字符                                                                                                           开始,三个数字字符结尾的字串  
9)\\s:匹配空格符(tab也算空格,它的空格数是可以在相应的编译软件中设置的,idea中一般默认一个table("\t")等于四个空格("\s"))
10)\\S:匹配非空格字符

*让正则表达式匹配不区分大小写: 
1*)   ((?i)abc)括号内的符号abc不区分大小写
2*)    Pattern pattern = Pattern.compile(string,Pattern.CASE_INSENSITIVE)//待匹配字符中所有的字符不区分大小写

6.定位符
1)^:指定起始字符        eg:^[0-9]+[a-z]*     \\以至少一个数字开始,后面接任意个小写字母

2)$:指定结束字符          eg:^[0-9]\\-[a-z]$    \\以至少一个数字开始,接一个”-”,并以任意小写字母                                                                      结束(结束相对整串字符sts而言)

3)\\b:匹配目标字符串的边界      eg:han\\b       \\sts="hanshunping"匹配不成功;sts="shunpinghan"匹配成功;sts="han shunping"匹配成功,在sts中的最后或空格算边界

4)\\B:匹配目标字符串的非边界   eg:han\\B      结果与3)相反

正则表达式基础知识汇总(java版)相关推荐

  1. JavaScript正则表达式基础知识汇总

    一.创建正则对象: 1.构造函数RegExp创建正则对象 1 var pattern = new RegExp('s$'); //pattern匹配以s结尾的字符串 2.使用正则直接量 1 var p ...

  2. Spring基础知识汇总 Java开发必看

    Spring简介 Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版.Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅 ...

  3. Java核心技术卷一基础知识第10版demo实例

    Java核心技术卷一基础知识第10版demo实例 第三章 JAVA的基本程序设计结构 3.7输入与输出 3.7.1读取输入 3.8控制流程 3.8.3循环 3.10数组 3.10.6多维数组 第四章 ...

  4. python基础知识资料-学习Python列表的基础知识汇总

    千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天,本喵带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要 ...

  5. 万物之始正则表达式全解析三部曲(上篇)-正则表达式基础知识及语法

    前言 各位小伙伴大家好,接下来几天时间,我会从多个角度对正则表达式进行系统阐述,让你了解正则表达式的前世今生. 以下是博主整理的Linux知识专栏,喜欢的小伙伴可根据自己的需求自行订阅. Linux疑 ...

  6. 4.电子计算机的分类,公基计算机基础知识汇总40

    公基计算机基础知识汇总40 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 3. 运算精度高电子计算机具有以往计算机无法比拟的计算精度, ...

  7. 1023day5:class类属性方法、每次执行类属性+1、内建模块、时间装饰器wrapper、面向对象__slots__方法:限制类的属性等基础知识、正则表达式基础知识、多态鸭子类型

    文章目录 一.类class 1.Python类class 属性 方法 2.类的构造方法__init__() 3.每次执行一次类的属性+1 二.模块 1.内建模块 2.第三方模块 3.定义自己的模块 三 ...

  8. 脑科学与脑电基础知识汇总

    点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 脑科学与脑电基础知识汇总 该部分汇总了社区分享的部分脑科学.EEG.fNIRS.BCI.人机交互等相关知识. 脑电与情绪 ...

  9. python基础知识资料-Python基础知识汇总

    原标题:Python基础知识汇总 1.Anaconda的安装 百度Anaconda的官网,下载左边的Python3.X版本 然后是设置路径,最后给出Jupyter notebook.具体参考: 猴子: ...

最新文章

  1. 三维重建 3D reconstruction 有哪些实用算法?
  2. 一年六篇顶会的清华大神提出Fastformer:史上最快、效果最好的Transformer
  3. Window ChromeDriver(简单4步完成)
  4. dpkg安装软件流程_ubuntu安装搜狗输入法linux版
  5. # W3C 中文离线教程 2016 年版
  6. Leetcode 剑指 Offer 40. 最小的k个数 (每日一题 20210825)
  7. 剑指offer和LeetCode题目笔记
  8. OpenGL中的几何体实例化(OpenGL Geometry Instancing)
  9. hanlp 词频统计_10.HanLP实现k均值--文本聚类
  10. python3最新版下载_python3.9下载-Python下载v3.9.0 官方最新版【x86|x64】-西西软件下载...
  11. ZooKeeper之(一)ZooKeeper是什么
  12. 设计模式之GOF23代理模式01
  13. mqtt判断设备是否在线_物联网的基石-mqtt 协议初识
  14. GD32F303修改外部25M晶振
  15. 安卓app逆向破解脱壳教程
  16. 《XX》――SY 手把手教你如何XX
  17. 从自己的角度比较《天书夜读》和《寒江独钓》
  18. Jquery 禁止键盘Backspace键
  19. 两码一号(四):蚂蚁产品大盘
  20. java扫码枪键盘_浅谈在react中如何实现扫码枪输入

热门文章

  1. 全国各大保险公司名称及编码
  2. 随想杂谈(06-06-30)
  3. 多人手柄联网游戏_多人联网游戏:迈出的第一步
  4. h5给标签添加自定义属性
  5. vue引入第三方库注意事项
  6. 网红营销——中东电商平台制胜的王道之选
  7. 彩虹岛服务器维护,彩虹岛官方网站欢迎您
  8. 关于.net framework4.0以及4.5安装失败,“安装时发生严重错误”……
  9. 组图:《赤壁》记者会 梁朝伟林志玲均否认结婚
  10. 计算机编码骂人,我想知道它的意思?是编码吗?是骂人?还是.浣犳..锛Yi字我也不? 爱问知识人...