正则表达式的通用语法以及用法作用
一、正则表达式语法
范围匹配 [ ] (一个中括号表示匹配一个)[abc]: 匹配abc中任意一个字符 [a-z]: 匹配小写字母a-z中的一个 [A-Z]: 匹配大写字母A-Z中的一个 [0-9]: 匹配数字0-9中的一个 组合匹配: [a-zA-Z0-9]: 匹配a-z或者A-Z或者0-9之间的任意一个字符 [a-dm-p]: 匹配a-d或m-p之间的任意一个字符 排除: [^abc]: 匹配除a、b、c之外的任意一个字符 //^在中括号里面表示非的意思 [^a-z]: 匹配除小写字母外的任意一个字符
代码演示public class Test { public static void main(String[] args) { //匹配abc中任意一个字符。 System.out.println("A".matches("[abc]")); //false System.out.println("ab".matches("[abc]")); //false System.out.println("a".matches("[abc]")); //true System.out.println("---------------------------------------"); //[a-z]:匹配小写字母a-z中的一个 System.out.println("B".matches("[a-z]")); //false System.out.println("b".matches("[a-z]")); //true System.out.println("---------------------------------------"); //[a-zA-Z0-9]:匹配a-z或者A-Z或者0-9之间的任意一个字符 System.out.println("我".matches("[a-zA-Z0-9]")); //false System.out.println("0".matches("[a-zA-Z0-9]")); //true System.out.println("0".matches("[a-zA-Z0-9]")); //true System.out.println("f".matches("[a-zA-Z0-9]")); //true System.out.println("A".matches("[a-zA-Z0-9]")); //true //这里加了一个空格,匹配范围就会更改为[a-z A-Z0-9]: // 匹配a-z或者空格或者A-Z或者0-9之间的任意一个字符 System.out.println(" ".matches("[a-z A-Z0-9]")); //true System.out.println("------------------------"); System.out.println("A".matches("[^A-Z]")); //false System.out.println("a".matches("[^A-Z]")); //true System.out.println("0".matches("[^A-Z]")); //true } }
预定义字符".": 匹配一个任意字符 "d": 匹配一个数字字符,相当于[0-9] "D": 匹配一个非数字,相当于[^0-9] "s": 匹配一个空白字符 "S": 匹配一个非空白字符 "w": 匹配一个单词字符,包括大小写字母,数字,下划线,相当于 [a-zA-Z0-9_] "W" : 匹配一个非单词字符 ^ : 匹配字符串的开始(在集合字符里[^a]表示非(不匹配)的意思 $ : 匹配字符串的结束 注意:有的记得加,变成,表转义 如: d D s S w W
代码演示public class Test2 { public static void main(String[] args) { //匹配任意一个字符 System.out.println(".".matches(".")); //true //匹配任意三个字符 System.out.println("a".matches("...")); //false System.out.println("-----------------------------------------"); //匹配是数字开头和数字结束的三个数字字符 System.out.println("02a".matches("^ddd#34;)); //false System.out.println("a12".matches("^ddd#34;)); //false System.out.println("a1a".matches("^ddd#34;)); //false System.out.println("250".matches("^ddd#34;)); //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 ,影响到整体
代码演示public class Test3 { public static void main(String[] args) { //表示匹配a-z中的字符 "一次" System.out.println("ab".matches("[a-z]?")); //false System.out.println("a".matches("[a-z]?")); //true System.out.println("----------------------------"); //表示匹配a-z中的字符 "任意次" System.out.println("abcabc".matches("[a-z]*")); //true System.out.println("-------------------------"); //表示匹配a-z中至少一次 System.out.println("ab".matches("[a-z]+")); //true System.out.println("-------------------------------------"); //表示匹配任意4个数字字符 System.out.println("abcd".matches("d{4}")); //false System.out.println("0123".matches("d{4}")); //true System.out.println("----------------------------------"); //表示匹配任意一个字符5次以上 System.out.println("abc".matches("w{5,}")); //false System.out.println("abcdefg".matches("w{5,}")); //true System.out.println("-----------------------------------------"); //表示匹配任意一个单词字符5-7次 System.out.println("abc".matches("w{5,7}")); //false System.out.println("abcdefgh".matches("w{5,7}")); //false System.out.println("abcde".matches("w{5,7}")); //true } }
二、正则表达式作用* 正则表达式是一个强大的字符串处理工具,是用于匹配字符串的模板, * 可以对字符串进行格式校验,查找、提取、替换等操作
三、String类中支持正则表达式的方法* boolean matches(String regex) 判断该字符串是否匹配指定的正则表达式 * String replaceAll(String regex, String replacement) 将该字符串中所有匹配正则表达式的内容替换成新的字符串,并返回替换后的新的字符串 * String[] split(String regex) 根据匹配规则,把字符串分割成多个子串
四、案例
身份证案例import java.util.Scanner; public class Test4 { /* 号码为18位,不能以数字0开头,前17位可以是数字,最后一位可以是数字或者大写字母X */ public static void main(String[] args) { Scanner rd=new Scanner(System.in); String a=rd.next(); Boolean b=a.matches("[1-9]d{16}[0-9X]"); System.out.println(b); } }
邮箱案例
public class Main { public static void main(String[] args) { //邮箱案例 Scanner rd=new Scanner(System.in); String a=rd.next(); boolean b=a.matches("^[a-zA-Z][a-zA-Z0-9_]{5,18}"); System.out.println(b); } }
作者:今日头条 KJ丶JK /CSDN-KJ.JK
如此惬意悠闲的线路,果断爱了!在这收获的季节是时候来一场说走就走的乡村游啦!国庆假期即将到来去欣赏一番九台的秋日风光吧!这条线路可以让你更好地体验农耕文化感受天作景地作布稻作画的神奇画卷领略秋天的秀美,享受丰收
国庆假期,潍坊推出游了个游通关挑战等82项文旅活动9月30日,潍坊市人民政府新闻办公室召开发布会,介绍诗溢潍坊畅享金秋潍坊秋季旅游产品发布情况。记者从发布会上获悉,为进一步挖掘和释放文化消费潜力,结合当前的疫情防控形势,潍坊市文化
世界旅游最安全的五个国家,你知道吗?21世纪应该是一个和平的年代,人们的生活方式在不断提高,近年来,旅游业大火,很多人都选择出国旅游,且不谈这个国家的交通,景点,最重要的就是安全问题了,只有人身安全得到保障,旅客才能
八仙过海的美丽传说起源于一个血腥的故事八仙过海,是在中国民间流传很广的神话传说。完整故事最早见于杂剧争玉板八仙过海。由八仙应白云仙长之邀渡海赴蓬莱仙岛,回程时铁拐李建议不搭船而各自施展法术的故事演化而来,于是有了八仙过
撑不住了?美国放宽对中国钕磁体的进口限制,外媒制裁解封前奏本文原创,禁止抄袭,违者必究众所周知,为了限制中国芯片行业的发展,从2019年开始,美国就限制一些先进的半导体企业自由出货到中国,例如ASML无法向中国自由出口EUV光刻机,连中芯
风向变了,中国新能源车比亚迪欧洲发布会三车齐发,开启多国交付风向变了,中国新能源汽车比亚迪欧洲发布会三车齐发,开启欧洲多国交付,包括挪威丹麦瑞典等燃油车今后可能会被新能源取代,这是推动世界发展的一个趋势,数据显示,2021年中国的纯电动汽车
中指研究院中国新能源上市公司呈蓬勃发展之势本报记者董曙光北京报道国庆前夕,由中国企业评价协会北京中指信息技术研究院主办的2022中国新能源上市公司研究报告会在京拉开帷幕。中国经营报记者在报告会上获悉,上述会议旨在研讨中国新
芯片不好卖,价格大跌,美国芯片巨头希望中国多买芯片近日,存储芯片大厂美光发布了第4财季的报表,数据显示,这一财报,营收下滑20,净利下滑45,创造了最近几年以来最惨数据。为什么会这样?美光表示,有一个原因就是中国市场需求疲软,导致
中国女篮挺进决赛!东莞4名女篮国手继续冲中国女篮赢了!9月30日在澳大利亚悉尼进行的2022女篮世界杯半决赛中中国队以6159战胜澳大利亚队挺进世界杯决赛!中国女篮自1994年后首次晋级世界杯(含赛事前身世锦赛)决赛(图
中安时评歌声嘹亮!与祖国共唱时代赞歌我和我的祖国,一刻也不能分割,无论我走到哪里,都流出一首赞歌,这首饱含深情的歌曲唱出了14亿中华儿女的共同心声,令人心潮澎湃,激动万千。在喜迎党的二十大的热烈氛围中,新中国迎来成立
中国梭子蟹之乡炎亭山海之间玉苍之南,半城玉海半城山的苍南,是从南京到浙江的第一站。因此也有俗语说浙南看一看苍南第一站。这些年大家听到苍南的名字最多的地方或许是电视新闻,这儿大部分时候都是台风登陆点,