栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

正则表达式基础知识汇总(java版)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式基础知识汇总(java版)

一、正则表达式基本组成和概念   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                                 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)相反

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/722071.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号