java 如何使用正则
正则表达式基础语法
Java中的正则表达式基于java.util.regex包实现,核心类是Pattern和Matcher。基本语法与其他语言类似:
\d匹配数字,\w匹配单词字符(字母、数字、下划线)[abc]匹配a、b或c中的任意一个字符^匹配行首,$匹配行尾*表示0次或多次,+表示1次或多次,?表示0次或1次
创建Pattern对象
通过Pattern.compile()方法编译正则表达式:
Pattern pattern = Pattern.compile("\\d+"); // 匹配一个或多个数字
注意Java字符串中需要对反斜杠进行转义,因此\d需写成\\d。
使用Matcher进行匹配
通过matcher()方法创建Matcher对象进行匹配操作:
Matcher matcher = pattern.matcher("123abc");
boolean isMatch = matcher.find(); // 返回true,因为字符串包含数字
String matchedText = matcher.group(); // 返回"123"
常用匹配方法
matches():整个字符串完全匹配正则
boolean fullMatch = "123".matches("\\d+"); // true
find():查找下一个匹配的子串
group():获取当前匹配的子串
replaceAll():替换所有匹配项
String result = "a1b2".replaceAll("\\d", "-"); // 结果为"a-b-"
分组捕获
使用圆括号()创建捕获组:
Pattern p = Pattern.compile("(\\d+)-(\\w+)");
Matcher m = p.matcher("123-abc");
if (m.matches()) {
String part1 = m.group(1); // "123"
String part2 = m.group(2); // "abc"
}
边界匹配
\b匹配单词边界:
Pattern.compile("\\bcat\\b").matcher("cat category").find(); // 只匹配第一个"cat"
预编译优化
对于频繁使用的正则表达式,建议预编译Pattern对象:
private static final Pattern EMAIL_PATTERN =
Pattern.compile("^[\\w.-]+@[\\w.-]+\\.[a-z]{2,6}$", Pattern.CASE_INSENSITIVE);
特殊字符处理
当正则中包含特殊字符时,使用Pattern.quote()进行转义:

String literal = Pattern.quote("$5.00"); // 转义为"\Q$5.00\E"





