JAVA如何正则
正则表达式基础语法
在Java中,正则表达式通过 java.util.regex 包实现,核心类为 Pattern 和 Matcher。

-
元字符

.匹配任意单个字符(除换行符)。\d匹配数字,等价于[0-9]。\w匹配单词字符(字母、数字、下划线)。\s匹配空白字符(空格、制表符等)。
-
量词
*匹配前一个元素零次或多次。+匹配前一个元素一次或多次。?匹配前一个元素零次或一次。{n}精确匹配 n 次。
-
分组与捕获
(pattern)捕获分组,可通过Matcher.group(int)获取。(?:pattern)非捕获分组。
Java 正则表达式使用示例
匹配字符串
import java.util.regex.*;
String text = "Hello, 123 World!";
Pattern pattern = Pattern.compile("\\d+"); // 匹配数字
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Found: " + matcher.group());
}
替换字符串
String replaced = text.replaceAll("\\d+", "NUM");
System.out.println(replaced); // 输出: Hello, NUM World!
验证格式(如邮箱)
String email = "test@example.com";
boolean isValid = email.matches("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}");
System.out.println(isValid); // 输出: true
常见正则表达式场景
提取URL中的域名
String url = "https://www.example.com/path";
Pattern domainPattern = Pattern.compile("https?://([^/]+)");
Matcher domainMatcher = domainPattern.matcher(url);
if (domainMatcher.find()) {
System.out.println("Domain: " + domainMatcher.group(1));
}
分割字符串
String data = "apple,orange,banana";
String[] fruits = data.split(","); // 按逗号分割
注意事项
- 转义字符:Java 字符串中需对反斜杠
\双重转义,如\\d表示正则的\d。 - 性能优化:频繁使用的正则表达式应预编译为
Pattern对象。 - 贪婪匹配:默认量词为贪婪模式,添加
?可改为懒惰模式(如.*?)。






