java 如何用正则表达式
正则表达式基础语法
Java中的正则表达式基于java.util.regex包实现,主要使用Pattern和Matcher类。基本语法与其他语言类似:
\d匹配数字,等价于[0-9]\w匹配字母、数字或下划线\s匹配空白字符(空格、制表符等).匹配任意字符(除换行符外)*匹配前一个字符0次或多次+匹配前一个字符1次或多次?匹配前一个字符0次或1次{n}匹配前一个字符恰好n次^匹配字符串开头$匹配字符串结尾
创建Pattern对象
使用Pattern.compile()方法编译正则表达式:
Pattern pattern = Pattern.compile("\\d+"); // 匹配一个或多个数字
注意Java字符串中需要对反斜杠进行转义,因此正则中的\d需写成\\d。
使用Matcher匹配
通过Pattern.matcher()方法创建Matcher对象:

Matcher matcher = pattern.matcher("123 abc 456");
常用Matcher方法:
matches():整个字符串是否匹配find():查找下一个匹配项group():获取当前匹配内容start()/end():获取匹配位置
常用匹配示例
验证邮箱格式:

String emailRegex = "^[\\w.-]+@[\\w.-]+\\.[a-z]{2,}$";
Pattern emailPattern = Pattern.compile(emailRegex, Pattern.CASE_INSENSITIVE);
提取字符串中的数字:
Pattern numPattern = Pattern.compile("\\d+");
Matcher numMatcher = numPattern.matcher("Price: 100, Quantity: 5");
while(numMatcher.find()) {
System.out.println(numMatcher.group());
}
分组捕获
使用括号()创建捕获组:
Pattern datePattern = Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})");
Matcher dateMatcher = datePattern.matcher("2023-05-15");
if(dateMatcher.matches()) {
String year = dateMatcher.group(1); // 2023
String month = dateMatcher.group(2); // 05
String day = dateMatcher.group(3); // 15
}
字符串替换
使用replaceAll()方法进行正则替换:
String text = "foo123bar456";
String replaced = text.replaceAll("\\d+", "NUM"); // "fooNUMbarNUM"
性能优化建议
- 频繁使用的正则表达式应编译为Pattern对象并复用
- 简单字符串操作优先使用String方法而非正则
- 避免过度复杂的正则表达式
- 考虑预编译模式:
static final Pattern PATTERN = Pattern.compile(...)






