【java正则表达式语法大全】在Java编程中,正则表达式(Regular Expression)是一种强大的文本处理工具,广泛用于字符串匹配、替换、分割等操作。Java通过`java.util.regex`包提供了对正则表达式的支持,主要包括`Pattern`和`Matcher`两个类。以下是对Java正则表达式常用语法的总结,结合表格形式进行展示,便于查阅与理解。
一、基本语法概述
| 符号 | 含义 | 示例 |
| `a` | 匹配字符 a | `a` 匹配 "a" |
| `\d` | 匹配一个数字(0-9) | `\d{3}` 匹配三位数字 |
| `\D` | 匹配非数字字符 | `\D+` 匹配多个非数字字符 |
| `\s` | 匹配空白字符(空格、换行、制表符等) | `\s+` 匹配多个空白字符 |
| `\S` | 匹配非空白字符 | `\S+` 匹配多个非空白字符 |
| `\w` | 匹配单词字符(字母、数字、下划线) | `\w+` 匹配多个单词字符 |
| `\W` | 匹配非单词字符 | `\W` 匹配非字母、数字、下划线的字符 |
| `.` | 匹配任意单个字符(除了换行符) | `a.c` 匹配 "abc"、"aac" 等 |
| `^` | 匹配字符串的开始位置 | `^a` 匹配以 "a" 开头的字符串 |
| `$` | 匹配字符串的结束位置 | `b$` 匹配以 "b" 结尾的字符串 |
| `` | 匹配前面的元素零次或多次 | `a` 匹配 "a"、"aa"、"aaa" 等 |
| `+` | 匹配前面的元素一次或多次 | `a+` 匹配 "a"、"aa"、"aaa" 等 |
| `?` | 匹配前面的元素零次或一次 | `a?` 匹配 "a" 或 "" |
| `{n}` | 匹配前面的元素恰好 n 次 | `a{3}` 匹配 "aaa" |
| `{n,}` | 匹配前面的元素至少 n 次 | `a{2,}` 匹配 "aa" 及以上 |
| `{n,m}` | 匹配前面的元素 n 到 m 次 | `a{2,4}` 匹配 "aa"、"aaa"、"aaaa" |
二、分组与捕获
| 符号 | 含义 | 示例 |
| `( )` | 分组,可以捕获内容 | `(ab)+` 匹配 "ab", "abab" 等 |
| `(?=...)` | 正向预查,不捕获 | `a(?=b)` 匹配 "a" 后面跟着 "b" 的情况 |
| `(?!...)` | 负向预查,不捕获 | `a(?!b)` 匹配 "a" 后面不是 "b" 的情况 |
| `(?<=...)` | 正向后查,不捕获 | `(?<=a)b` 匹配 "b" 前面是 "a" |
| `(? | 负向后查,不捕获 | `(? |
三、字符类与范围
| 符号 | 含义 | 示例 |
| `[abc]` | 匹配 a、b 或 c 中的任意一个 | `[aeiou]` 匹配元音 |
| `[^abc]` | 匹配不是 a、b、c 的字符 | `[^0-9]` 匹配非数字字符 |
| `[a-z]` | 匹配小写字母 | `[A-Z]` 匹配大写字母 |
| `[0-9]` | 匹配数字 | `[0-9a-zA-Z]` 匹配所有字母和数字 |
| `[a-zA-Z0-9_]` | 匹配单词字符 | 与 `\w` 相同 |
四、转义与特殊字符
| 符号 | 含义 | 示例 |
| `\` | 转义特殊字符 | `\.` 匹配实际的点号 |
| `\\d` | 匹配数字 | 在Java字符串中写成 `"\\d"` |
| `\\s` | 匹配空格 | 在Java字符串中写成 `"\\s"` |
| `\\w` | 匹配单词字符 | 在Java字符串中写成 `"\\w"` |
五、常用方法与示例
1. `Pattern.matches()`
```java
boolean result = Pattern.matches("a+", "aaa");
```
2. `Pattern.compile()` + `Matcher.find()`
```java
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("abc123def456");
while (matcher.find()) {
System.out.println(matcher.group());
}
```
3. `String.split()`
```java
String[] parts = "a,b,c".split(",");
```
4. `String.replaceAll()`
```java
String newStr = "hello world".replaceAll("\\s+", " ");
```
六、常见应用场景
| 场景 | 说明 | 示例 |
| 邮箱验证 | 使用正则判断邮箱格式是否合法 | `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` |
| 手机号码校验 | 匹配特定格式的手机号 | `^1[3-9]\\d{9}$` |
| 密码强度检测 | 判断密码是否包含大小写字母、数字等 | `^(?=.[a-z])(?=.[A-Z])(?=.\\d).{8,}$` |
| 文本提取 | 从字符串中提取特定信息 | `"(\\d{4})-(\\d{2})-(\\d{2})"` 提取日期 |
总结
Java中的正则表达式语法虽然复杂,但通过合理使用字符类、量词、分组和边界符号,可以实现高效的字符串处理功能。掌握这些基础语法,有助于提升代码的灵活性和可维护性。在实际开发中,建议配合调试工具(如在线正则测试器)进行验证,确保正则表达式的准确性。


