Java中正则表达式用法详解,新手如何快速掌握?
- 后端开发
- 2025-11-01
- 5
Java 中使用正则表达式是一种强大的文本处理方式,它可以帮助我们快速进行字符串的匹配、查找、替换和分割等操作,下面将详细介绍 Java 中如何使用正则表达式。
正则表达式的基本语法
正则表达式由字符、元字符和量词组成,以下是一些常用的正则表达式符号:

| 符号 | 说明 |
|---|---|
| 匹配除换行符以外的任意单个字符 | |
| [] | 匹配括号内的任意一个字符(字符类) |
| [^] | 匹配不在括号内的任意一个字符(否定字符类) |
| 匹配前面的子表达式零次或多次 | |
| 匹配前面的子表达式一次或多次 | |
| 匹配前面的子表达式零次或一次 | |
| {n} | 匹配前面的子表达式恰好 n 次 |
| {n,} | 匹配前面的子表达式至少 n 次 |
| {n,m} | 匹配前面的子表达式至少 n 次,但不超过 m 次 |
Java 中使用正则表达式的方法
Java 中,正则表达式主要使用 java.util.regex 包中的类来实现,以下是一些常用的方法:
| 方法 | 说明 |
|---|---|
| Pattern.compile(String regex) | 将正则表达式编译为 Pattern 对象 |
| Pattern.matches(String regex, String input) | 判断输入字符串是否符合正则表达式 |
| Pattern.split(String regex, String input) | 将输入字符串按照正则表达式分割成多个字符串 |
| Matcher matcher(String input) | 使用正则表达式匹配输入字符串,返回 Matcher 对象 |
| Matcher.find() | 查找与正则表达式匹配的子串 |
| Matcher.group(int groupIndex) | 返回第 groupIndex 个捕获组的匹配字符串 |
| Matcher.replaceAll(String replacement) | 将匹配的子串替换为指定的字符串 |
示例
以下是一个使用正则表达式匹配电子邮件地址的示例:
import java.util.regex.Pattern; import java.util.regex.Matcher; public class RegexExample { public static void main(String[] args) { String email = "example@example.com"; String regex = "\b[AZaz09._%+]+@[AZaz09.]+\.[AZ|az]{2,}\b"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(email); if (matcher.matches()) { System.out.println("这是一个有效的电子邮件地址。"); } else { System.out.println("这不是一个有效的电子邮件地址。"); } } }
FAQs
问题 1:如何将字符串按照正则表达式分割成多个字符串?

解答: 使用 Pattern.split(String regex, String input) 方法可以将输入字符串按照正则表达式分割成多个字符串。
String input = "hello world, java, python"; String regex = "\s+"; String[] result = input.split(regex); for (String str : result) { System.out.println(str); }
输出结果为:

hello world, java, python
问题 2:如何替换字符串中匹配的正则表达式子串?
解答: 使用 Matcher.replaceAll(String replacement) 方法可以将匹配的正则表达式子串替换为指定的字符串。
String input = "hello world, java, python"; String regex = "\bjava\b"; String replacement = "Java"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(input); String result = matcher.replaceAll(replacement); System.out.println(result);
输出结果为:
hello world, Java, python