正则表达式(Regex)是Java开发中处理文本匹配与替换的核心工具,掌握它能极大提升代码效率与可维护性。本指南将深入解析Java Regex的核心概念、语法及实战技巧,助你成为文本处理专家。
Java通过java.util.regex包提供正则支持,主要包含Pattern和Matcher两个类:
. 匹配任意字符 \d 数字 \w 单词字符 \s 空白字符
* 0次或多次 + 1次或多次 ? 0次或1次 {n} 恰好n次
使用()创建捕获组,可通过group()方法提取内容:
String regex = "(\\d{3})-(\\d{4})";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("123-4567");
if (matcher.find()) {
System.out.println("组1: " + matcher.group(1)); // 输出: 123
}
String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
boolean isValid = Pattern.matches(emailRegex, "test@example.com");
String html = "Hello World";
Pattern tagPattern = Pattern.compile("(.*?)");
Matcher matcher = tagPattern.matcher(html);
while (matcher.find()) {
System.out.println("内容: " + matcher.group(1)); // 输出: Hello World
}
Pattern.compile()避免重复编译开销。.*?非贪婪模式减少回溯。^和$提升匹配精确度。问题1:特殊字符转义
需用双反斜杠\\转义,例如匹配点号应写为\\.。
问题2:中文匹配
使用Unicode属性\\p{IsHan}匹配中文字符。
通过本指南,您可系统掌握Java Regex从基础到高阶的应用。结合实际项目练习,快速提升开发效率!