-
重复匹配
-
匹配开头和结尾
-
范围匹配
-
分组匹配
元字符
matches方法在String类里面就有定义,作用是将字符串与matches括号中的正则表达式进行比较,并且返回boolean值
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?”;
Sys
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
tem.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