【java正则表达式语法大全】在Java编程中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换和验证字符串。Java通过`java.util.regex`包提供了对正则表达式的全面支持,其中主要的类包括`Pattern`和`Matcher`。以下是对Java正则表达式常用语法的总结。
一、基本语法概述
| 符号 | 含义 | 示例 | 说明 | ||
| `a` | 匹配字符 a | `a` | 匹配单个字符 | ||
| `\d` | 匹配数字 | `\d{3}` | 匹配三个数字 | ||
| `\D` | 匹配非数字 | `\D+` | 匹配一个或多个非数字字符 | ||
| `\s` | 匹配空白符(空格、制表符等) | `\s+` | 匹配一个或多个空白符 | ||
| `\S` | 匹配非空白符 | `\S{5}` | 匹配五个非空白字符 | ||
| `\w` | 匹配字母、数字、下划线 | `\w+` | 匹配一个或多个单词字符 | ||
| `\W` | 匹配非单词字符 | `\W` | 匹配非字母、数字、下划线的字符 | ||
| `.` | 匹配任意单个字符(除换行符) | `a.c` | 匹配 "abc" 或 "a1c" | ||
| `^` | 匹配字符串开始 | `^Hello` | 匹配以 "Hello" 开头的字符串 | ||
| `$` | 匹配字符串结尾 | `World$` | 匹配以 "World" 结尾的字符串 | ||
| `` | 匹配前一个字符0次或多次 | `a` | 匹配 "a"、"aa"、"aaa" 等 | ||
| `+` | 匹配前一个字符1次或多次 | `a+` | 匹配 "a"、"aa" 等 | ||
| `?` | 匹配前一个字符0次或1次 | `a?` | 匹配 "a" 或空 | ||
| `{n}` | 匹配前一个字符n次 | `a{3}` | 匹配 "aaa" | ||
| `{n,}` | 匹配前一个字符至少n次 | `a{2,}` | 匹配 "aa" 及以上 | ||
| `{n,m}` | 匹配前一个字符n到m次 | `a{2,4}` | 匹配 "aa" 到 "aaaa" | ||
| `[]` | 字符集合 | `[abc]` | 匹配 a、b 或 c | ||
| `[^]` | 否定字符集合 | `[^abc]` | 匹配非 a、b、c 的字符 | ||
| ` | ` | 或操作 | `cat | dog` | 匹配 "cat" 或 "dog" |
| `()` | 分组 | `(ab)+` | 匹配 "ab" 重复多次 |
二、转义字符与特殊字符
在正则表达式中,某些字符具有特殊含义,如 `.`、``、`+` 等。如果需要匹配这些字符本身,必须使用反斜杠 `\` 进行转义。
| 特殊字符 | 转义写法 | 说明 |
| `.` | `\.` | 匹配实际的点号 |
| `` | `\` | 匹配星号 |
| `+` | `\+` | 匹配加号 |
| `?` | `\?` | 匹配问号 |
| `(` | `\(` | 匹配左括号 |
| `)` | `\)` | 匹配右括号 |
三、常用正则表达式示例
| 场景 | 正则表达式 | 说明 |
| 匹配邮箱地址 | `^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,}$` | 基本邮箱格式校验 |
| 匹配电话号码(中国) | `^1[3-9]\d{9}$` | 匹配手机号码 |
| 匹配IP地址 | `^(\d{1,3}\.){3}\d{1,3}$` | 匹配IPv4地址 |
| 匹配URL | `^(https?:\/\/)?([\w-]+\.)+[\w-]+(\/[\w-./?%&=])?$` | 基本URL匹配 |
| 匹配日期(YYYY-MM-DD) | `^\d{4}-\d{2}-\d{2}$` | 匹配标准日期格式 |
四、Java中的使用方式
在Java中,通常使用 `Pattern` 和 `Matcher` 类来执行正则表达式操作:
```java
import java.util.regex.;
public class RegexExample {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("a+");
Matcher matcher = pattern.matcher("aaabbb");
while (matcher.find()) {
System.out.println("匹配内容: " + matcher.group());
}
}
}
```
五、注意事项
- 正则表达式在Java中是区分大小写的,可以通过 `Pattern.CASE_INSENSITIVE` 标志进行忽略大小写匹配。
- 使用 `split()` 方法可以按正则表达式分割字符串。
- 在构建复杂正则表达式时,建议先用在线测试工具验证其正确性。
六、总结
Java正则表达式语法丰富且灵活,适用于各种文本处理场景。掌握其基本符号和结构,能显著提升代码的效率与可读性。同时,在实际开发中应注重正则表达式的可维护性和性能优化。


