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. 示例
- 贪婪与惰性
str: 玩⼉吃鸡游戏, 晚上⼀起上游戏, ⼲嘛呢? 打游戏啊
reg: 玩⼉.*?游戏 (惰性匹配)
此时匹配的是: 玩⼉吃鸡游戏
reg: 玩⼉.*游戏 (贪婪匹配)
此时匹配的是: 玩⼉吃鸡游戏, 晚上⼀起上游戏, ⼲嘛呢? 打游戏
- 匹配数字
@Test
void test01(){
String str = " hello Java 123 ,456 ";
System.out.println(str.replaceAll("\\d+","9"));
}
/*
执行结果
hello Java 9 ,9
*/
其中 \d 意思是匹配 数字, 因为在java中 \ 有特殊含义,因此需要再加一个斜杠 写成 \\d
其中 + 的意思 是 重复一次或更多次,也就是多次匹配
因此 其中的数字都被替换。
- 对于一串字符串 判断它是否是字母+数字+字母的格式
@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
*/
- 对于一串字符串 判断它是否以 非数字开头 ,以字母结尾
@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
*/
文章来源地址https://www.toymoban.com/news/detail-554290.html
文章来源:https://www.toymoban.com/news/detail-554290.html
到了这里,关于JAVA系列---正则表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!