Java学习笔记——正则表达式
2021/10/11 1:15:16
本文主要是介绍Java学习笔记——正则表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
正则表达式
- 元字符
- 重复匹配
- 匹配开头和结尾
- 范围匹配
元字符
package RegularExpression; public class demo3 { public static void main(String[] args) { //字符精准匹配 String s1 = "abc"; System.out.println("abc".matches(s1)); //true System.out.println("xyz".matches(s1)); //false // . 匹配任意一个字符且仅限一个字符。 String s2 = "a.c"; System.out.println("abc".matches(s2)); //true System.out.println("abdc".matches(s2)); //false System.out.println("a123c".matches(s2)); //false // \d 匹配单个数字字符,0-9之间 String s3 = "12\\d"; System.out.println("121".matches(s3)); //true System.out.println("1234".matches(s3)); //false // \w 匹配一个字母、数字或下划线 String s4 = "ab\\w"; System.out.println("abc".matches(s4)); //true System.out.println("ab_".matches(s4)); //true System.out.println("ab2".matches(s4)); //true // \s 匹配一个空格字符(包括空格和\t字符) String s5 = "\\s"; System.out.println(" ".matches(s5)); //true System.out.println("\t".matches(s5)); //true // \d 匹配一个数字字符,而\D匹配一个非数字 String s6 = "\\D"; System.out.println("a".matches(s6)); //true // 以上这些,以此类推,小写变成大写后匹配的范围都完全相反 //\w可以匹配单词字符,\W匹配非单词字符 // \s匹配空白字符,\S匹配非空白字符 } }
这里需要注意的是
在正则表达式中是\s,\d,到了实际写成字符串的时候,都变成了\\s,\\d
String r2 = “a&c”; 会直接报错,但是String r3 = “\n”; 不会报错
说明java中,\必须与特定的字符绑定出现。
但是正则表达式中又要用到单个的 \ 来转义特定字符,所以就需要用 \\ 来获取一个单个的 \,放到正则表达式里面。因为 \\ 中的第一个 \ 会作为转义字符,改变第二个 \
总而言之一句话,正则表达式中的 \ 在实际写的时候全部换成 \\ 就行了
重复匹配
package RegularExpression; public class demo4 { public static void main(String[] args) { //重复匹配 /* 修饰符 * 可以匹配任意个字符,包括0个字符 放在元字符后面,比如\d*,代表可以匹配任意数量的数字字符 放在字符后面,代表可以匹配任意个该字符 */ //放在元字符后面 String s1 = "ab\\d*"; System.out.println("ab123".matches(s1)); //true System.out.println("ab".matches(s1)); //true //放在字符后面 String ss1 = "abc*"; System.out.println("ab".matches(ss1)); //true,这里是匹配0个字符c System.out.println("abccc".matches(ss1)); //true /* 修饰符+可以匹配至少一个字符 放在元字符后面,比如\d+,代表至少匹配一个数字字符 放在字符后面,代表匹配至少一个该字符 */ //放在元字符后面 String s2 = "ab\\d+"; System.out.println("ab".matches(s2)); //false,至少一个,不能是0个 System.out.println("ab123".matches(s2)); //true //放在字符后面 String ss2 = "abc+"; System.out.println("ab".matches(ss2)); //false,至少包含一个该字符 System.out.println("abccc".matches(ss2)); //true /* 修饰符?可以匹配0个或一个字符 放在元字符后面,比如\d?,代表可以匹配零个或者一个数字字符 放在字符后面,代表匹配零个或一个该字符 */ //放在元字符后面 String s3 = "ab\\d?"; System.out.println("ab".matches(s3)); //true System.out.println("ab12".matches(s3)); //false //放在字符后面 String ss3 = "abc?"; System.out.println("ab".matches(ss3)); //true System.out.println("abcc".matches(ss3)); //false /* 修饰符{n}可以精确指定n个字符 放在元字符后面,比如\d{3},代表匹配3个数字字符 放在字符后面,代表匹配n个该字符 */ //放在元字符后面 String s4 = "ab\\d{3}"; System.out.println("ab123".matches(s4)); //true System.out.println("ab1234".matches(s4)); //false //放在字符后面 String ss4 = "abc{3}"; System.out.println("abccc".matches(ss4)); //true System.out.println("abc".matches(ss4)); //false /* 修饰符{n,m}可以指定匹配n~m个字符 放在元字符后面,比如\d{2,4},代表匹配2到4个数字字符 放在字符后面,代表匹配n到m个该字符 */ //放在元字符后面 String s5 = "ab\\d{2,4}"; System.out.println("ab10".matches(s5)); //true,注意这里是两个数字字符1和0 System.out.println("ab2".matches(s5)); //false //放在字符后面 String ss5 = "abc{2,4}"; System.out.println("abcc".matches(ss5)); //true System.out.println("abc".matches(ss5)); //false /* 修饰符{n,}可以匹配至少n个字符 放在元字符后面,比如\d{2,},代表至少匹配2个数字字符 放在字符后面,代表至少匹配n个该字符 */ //放在元字符后面 String s6 = "ab\\d{2,}"; System.out.println("ab123".matches(s6)); //true System.out.println("ab2".matches(s6)); //false //放在字符后面 String ss6 = "abc{2,}"; System.out.println("abccc".matches(ss6)); //true System.out.println("abc".matches(ss6)); //false } }
匹配开头和结尾
package RegularExpression; public class demo6 { public static void main(String[] args) { //匹配开头和结尾 //^表示开头,$表示结尾 //比如 ^\d\w$表示开头为\d,结尾是\w String s = "^\\d\\w$"; System.out.println("3A".matches(s)); //true System.out.println("A3".matches(s)); //false // 当然也可以用到字符上 String ss = "^A.C$"; System.out.println("ABC".matches(ss)); //true,要是"^AC$"的话就为false System.out.println("XYZ".matches(ss)); //false } }
范围匹配
package RegularExpression; public class demo7 { public static void main(String[] args) { //匹配指定范围 /* [0-9]匹配数字0到9 [a-z]匹配字符a到z [A-Z]匹配字符A到Z */ String s = "[0-9]A"; System.out.println("3A".matches(s)); //true System.out.println("AA".matches(s)); //false //在括号里面写上^,可以用作排除法 //[^1-9]{2}就是匹配除了数字之外的任意两个字符 String s2 = "[^1-9]{2}"; System.out.println("ab".matches(s2)); //true System.out.println("12".matches(s2)); //false } }
这篇关于Java学习笔记——正则表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-29RocketMQ底层原理资料详解:新手入门教程
- 2024-11-29RocketMQ源码资料解析与入门教程
- 2024-11-29[开源]6.1K star!这款电视直播源神器真的太赞啦!
- 2024-11-29HTTP压缩入门教程:轻松提升网页加载速度
- 2024-11-29JWT开发入门指南
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能