JAVA系列---正则表达式

文章目录

  • 1. 常见元字符
  • 2. 量词
  • 3. 匹配模式
  • 4. 示例

1. 常见元字符

编号 元字符 匹配功能
1 . 匹配除换⾏符以外的任意字符
2 \w 匹配字⺟或数字或下划线
3 \s 匹配任意的空⽩符
4 \d 匹配数字
5 \n 匹配⼀个换⾏符
6 \t 匹配⼀个制表符
7 ^ 匹配字符串的开始
8 $ 匹配字符串的结尾
9 \W 匹配⾮字⺟或数字或下划线
10 \D 匹配⾮数字
11 \S 匹配⾮空⽩符
12 a b
13 () 匹配括号内的表达式,也表示⼀个组
14 […] 匹配字符组中的字符
15 [^…] 匹配除了字符组中字符的所有字符

2. 量词

编号 元字符 功能
1 * 重复零次或更多次
2 + 重复⼀次或更多次
3 重复零次或⼀次
4 {n} 重复n次
5 {n,} 重复n次或更多次
6 {n,m} 重复n到m次

3. 匹配模式

编号 元字符 功能
1 .* 贪婪匹配
2 .*? 惰性匹配

4. 示例

  1. 贪婪与惰性
str: 玩⼉吃鸡游戏, 晚上⼀起上游戏, ⼲嘛呢? 打游戏啊
reg: 玩⼉.*?游戏 (惰性匹配)
此时匹配的是: 玩⼉吃鸡游戏


reg: 玩⼉.*游戏 (贪婪匹配)
此时匹配的是: 玩⼉吃鸡游戏, 晚上⼀起上游戏, ⼲嘛呢? 打游戏
  1. 匹配数字
@Test
void test01(){
    String str = "  hello   Java 123 ,456 ";
    System.out.println(str.replaceAll("\\d+","9"));
}


/*
执行结果
  hello   Java 9 ,9
 */


其中 \d 意思是匹配 数字, 因为在java中 \ 有特殊含义,因此需要再加一个斜杠 写成 \\d
其中 + 的意思 是 重复一次或更多次,也就是多次匹配
因此 其中的数字都被替换。
  1. 对于一串字符串 判断它是否是字母+数字+字母的格式
@Test
void test02(){
    String str1 = "a1b";
    String str2 = "1a1";
    System.out.println(str1.matches("[a-zA-Z]\\d[a-zA-Z]"));
    System.out.println(str2.matches("[a-zA-Z]\\d[a-zA-Z]"));
}
/*
执行结果
true
false
*/

  1. 对于一串字符串 判断它是否以 非数字开头 ,以字母结尾
@Test
void test03(){
    String regex = "^\\D.*[a-zA-Z]$";
    System.out.println("12dads45".matches(regex));
    System.out.println("dsadsguakgdk12".matches(regex));
    System.out.println("12dbsjka".matches(regex));
    System.out.println("..dd456sds".matches(regex));
}
/*
执行结果
false
false
false
true
*/

你可能感兴趣的:(java,正则表达式)