1 正则表达式-字符类
-
语法示例:[] 表示匹配单个字符 ^ 取反 - 范围
-
[abc]:代表a或者b,或者c字符中的一个。
-
[^abc]:代表除a,b,c以外的任何字符。
-
[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之间的任意一个字符。
-
2 正则表达式-逻辑运算符
- 语法示例:
- &&:并且
- | :或者
3 正则表达式-预定义字符
- 语法示例:
- “.” : 匹配任何字符。如果要表示一个字符点,那么就得使用\.
- “\d”:任何数字[0-9]的简写;
- “\D”:任何非数字[^0-9]的简写;
- “\s”: 空白字符:[ \t\n\x0B\f\r] 的简写
- “\S”: 非空白字符:[^\s] 的简写
- “\w”:单词字符:[a-zA-Z_0-9]的简写
- “\W”:非单词字符:[^\w]
4 正则表达式-数量词
- 语法示例:
- X? : 0次或1次
- X* : 0次到多次
- X+ : 1次或多次
- X{n} : 恰好n次
- X{n,} : 至少n次(包含n)
- X{n,m}: n到m次(n和m都是包含的)
4 正则表达式-分组–括号( )
public class Test5分组括号 {
public static void main(String[] args) {
/*
正则表达式-分组括号( )
规则相同的分成一组
*/
// ([A-Z0-9]{5}-){4} [A-Z0-9]{5}
String str = “DG8FV-B9TKY-FRT9J-99899-XPQ4G”;
// 分成5组: 前面4组的规则是一样的 后面一组单独规则
System.out.println(str.matches("([A-Z0-9]{5}-){4}[A-Z0-9]{5}"));// true
System.out.println("+=================================");
// 扩展---正则表达式匹配叠词
String str1 = "哈哈";
// (.) 第一组内容,\\1表示第一组再出现一次
System.out.println(str1.matches("(.)\\1"));// true
System.out.println("嘿嘿".matches("(.)\\1"));// true
System.out.println("呵呵".matches("(.)\\1"));// true
System.out.println("黑马".matches("(.)\\1"));// false
System.out.println("+=================================");
String str2 = "哈哈哈";
// (.) 第一组内容,\\1{2}表示第一组再出现2次
System.out.println(str2.matches("(.)\\1{2}"));// true
System.out.println("嘿嘿嘿".matches("(.)\\1{2}"));// true
System.out.println("呵呵呵".matches("(.)\\1{2}"));// true
System.out.println("黑妈妈".matches("(.)\\1{2}"));// false
System.out.println("+=================================");
String str3 = "高高兴兴";
// (.) 第一组内容,\\1表示第一组再出现一次; (.) 第二组内容,\\2表示第二组再出现一次
System.out.println(str3.matches("(.)\\1(.)\\2"));// true
System.out.println("嘿嘿嘿哈哈哈".matches("(.)\\1{2}(.)\\2{2}"));// true
System.out.println("+=================================");
String str4 = "高兴高兴";
System.out.println(str4.matches("(..)\\1"));// true
}
}