正则表达式的通用语法以及用法作用
一、正则表达式语法
范围匹配〔〕(一个中括号表示匹配一个)〔abc〕:匹配abc中任意一个字符〔az〕:匹配小写字母az中的一个〔AZ〕:匹配大写字母AZ中的一个〔09〕:匹配数字09中的一个组合匹配:〔azAZ09〕:匹配az或者AZ或者09之间的任意一个字符〔admp〕:匹配ad或mp之间的任意一个字符排除:〔abc〕:匹配除a、b、c之外的任意一个字符在中括号里面表示非的意思〔az〕:匹配除小写字母外的任意一个字符
代码演示publicclassTest{publicstaticvoidmain(String〔〕args){匹配abc中任意一个字符。System。out。println(A。matches(〔abc〕));falseSystem。out。println(ab。matches(〔abc〕));falseSystem。out。println(a。matches(〔abc〕));trueSystem。out。println();〔az〕:匹配小写字母az中的一个System。out。println(B。matches(〔az〕));falseSystem。out。println(b。matches(〔az〕));trueSystem。out。println();〔azAZ09〕:匹配az或者AZ或者09之间的任意一个字符System。out。println(我。matches(〔azAZ09〕));falseSystem。out。println(0。matches(〔azAZ09〕));trueSystem。out。println(0。matches(〔azAZ09〕));trueSystem。out。println(f。matches(〔azAZ09〕));trueSystem。out。println(A。matches(〔azAZ09〕));true这里加了一个空格,匹配范围就会更改为〔azAZ09〕:匹配az或者空格或者AZ或者09之间的任意一个字符System。out。println(。matches(〔azAZ09〕));trueSystem。out。println();System。out。println(A。matches(〔AZ〕));falseSystem。out。println(a。matches(〔AZ〕));trueSystem。out。println(0。matches(〔AZ〕));true}}
预定义字符。:匹配一个任意字符d:匹配一个数字字符,相当于〔09〕D:匹配一个非数字,相当于〔09〕s:匹配一个空白字符S:匹配一个非空白字符w:匹配一个单词字符,包括大小写字母,数字,下划线,相当于〔azAZ09〕W:匹配一个非单词字符:匹配字符串的开始(在集合字符里〔a〕表示非(不匹配)的意思:匹配字符串的结束注意:有的记得加,变成,表转义如:dDsSwW
代码演示publicclassTest2{publicstaticvoidmain(String〔〕args){匹配任意一个字符System。out。println(。。matches(。));true匹配任意三个字符System。out。println(a。matches(。。。));falseSystem。out。println();匹配是数字开头和数字结束的三个数字字符System。out。println(02a。matches(ddd34;));falseSystem。out。println(a12。matches(ddd34;));falseSystem。out。println(a1a。matches(ddd34;));falseSystem。out。println(250。matches(ddd34;));true}}
数量词(限定符)(放在后面)?:0次或1次:0次或多次(任意次):1次或多次{n}:重复n次{n,}:重复n次以上(至少n次)n{n,m}:重复n到m次(包括n和m)注意:限定符只能影响到离它最近的那个规则,如果想要影响整体,就给那个整体加()如:需要匹配over!三次System。out。println(over!over!over!。matches(over!{3}));false,只能影响到!System。out。println(over!over!over!。matches((over!){3}));true,影响到整体
代码演示publicclassTest3{publicstaticvoidmain(String〔〕args){表示匹配az中的字符一次System。out。println(ab。matches(〔az〕?));falseSystem。out。println(a。matches(〔az〕?));trueSystem。out。println();表示匹配az中的字符任意次System。out。println(abcabc。matches(〔az〕));trueSystem。out。println();表示匹配az中至少一次System。out。println(ab。matches(〔az〕));trueSystem。out。println();表示匹配任意4个数字字符System。out。println(abcd。matches(d{4}));falseSystem。out。println(0123。matches(d{4}));trueSystem。out。println();表示匹配任意一个字符5次以上System。out。println(abc。matches(w{5,}));falseSystem。out。println(abcdefg。matches(w{5,}));trueSystem。out。println();表示匹配任意一个单词字符57次System。out。println(abc。matches(w{5,7}));falseSystem。out。println(abcdefgh。matches(w{5,7}));falseSystem。out。println(abcde。matches(w{5,7}));true}}
二、正则表达式作用正则表达式是一个强大的字符串处理工具,是用于匹配字符串的模板,可以对字符串进行格式校验,查找、提取、替换等操作
三、String类中支持正则表达式的方法booleanmatches(Stringregex)判断该字符串是否匹配指定的正则表达式StringreplaceAll(Stringregex,Stringreplacement)将该字符串中所有匹配正则表达式的内容替换成新的字符串,并返回替换后的新的字符串String〔〕split(Stringregex)根据匹配规则,把字符串分割成多个子串
四、案例
身份证案例importjava。util。Scanner;publicclassTest4{号码为18位,不能以数字0开头,前17位可以是数字,最后一位可以是数字或者大写字母Xpublicstaticvoidmain(String〔〕args){ScannerrdnewScanner(System。in);Stringard。next();Booleanba。matches(〔19〕d{16}〔09X〕);System。out。println(b);}}
邮箱案例
publicclassMain{publicstaticvoidmain(String〔〕args){邮箱案例ScannerrdnewScanner(System。in);Stringard。next();booleanba。matches(〔azAZ〕〔azAZ09〕{5,18});System。out。println(b);}}
作者:今日头条KJ丶JKCSDNKJ。JK