java如何使用正则表达式
正则表达式基础语法
Java中正则表达式通过java.util.regex包实现,核心类为Pattern和Matcher。基本元字符包括:
.匹配任意单个字符(除换行符)\d匹配数字,等价于[0-9]\w匹配单词字符(字母、数字、下划线)\s匹配空白字符(空格、制表符等)^匹配行首,$匹配行尾*零次或多次匹配,+一次或多次匹配,?零次或一次匹配
创建Pattern对象
编译正则表达式为Pattern对象是高效做法,适合重复使用:
Pattern pattern = Pattern.compile("\\d{3}-\\d{4}"); // 匹配XXX-XXXX格式
使用Matcher进行匹配
通过Matcher对象执行匹配操作:
Matcher matcher = pattern.matcher("123-4567");
boolean isMatch = matcher.matches(); // 完全匹配
boolean findMatch = matcher.find(); // 部分匹配
常用匹配方法
字符串类也提供快捷方法:
String phone = "123-4567";
boolean matches = phone.matches("\\d{3}-\\d{4}"); // 直接匹配
String replaced = phone.replaceAll("\\d", "*"); // 替换所有数字
分组捕获
圆括号()创建捕获组,可通过group()方法获取:
Pattern p = Pattern.compile("(\\d{3})-(\\d{4})");
Matcher m = p.matcher("123-4567");
if (m.find()) {
String area = m.group(1); // 获取第一组"123"
String number = m.group(2); // 获取第二组"4567"
}
边界匹配
使用\b匹配单词边界:
Pattern.compile("\\bcat\\b").matcher("cat category").find(); // 只匹配独立单词
预编译模式优化
对于频繁使用的正则表达式,建议预编译:
private static final Pattern EMAIL_PATTERN =
Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);
特殊字符转义
需要转义的字符:[ ] { } ( ) \ ^ $ | ? * + .,使用双反斜杠:
Pattern.compile("\\$\\d+\\.\\d{2}"); // 匹配货币格式如$12.34






