Pattern和Matcher是Java正则操作核心类,Pattern通过compile编译正则式,Matcher执行匹配;支持find、matches、lookingAt等方法及分组捕获,可高效处理文本提取与验证。
在Java中,Pattern 和 Matcher 是正则表达式操作的核心类,位于 java.util.regex 包中。它们提供了比 String 类中 matches() 方法更强大、灵活的文本匹配能力。
Pattern 类表示一个已编译的正则表达式。它不能通过构造函数创建实例,而是通过静态方法 compile() 来生成 Pattern 对象。
常用方式如下:
Pattern pattern = Pattern.compile("\\d+"); // 匹配一个或多个数字compile 方法有两个重载版本:
Matcher 是一个引擎,用于对输入字符串执行匹配操作。通过 Pattern 的 matcher() 方法创建 Matcher 实例。
String input = "年龄是25岁"; Matcher matcher = pattern.matcher(input);Matcher 提供多种匹配方式:
示例:使用 find() 提取所有数字
Pattern pat
tern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("张三今年18岁,月薪5000元");
while (matcher.find()) {
System.out.println("找到数字: " + matcher.group());
}
// 输出:
// 找到数字: 18
// 找到数字: 5000
正则中的括号 () 表示分组,Matcher 可以通过 group() 方法获取匹配的子串。
例如,提取姓名和电话:
String text = "联系人:李四,电话:13812345678"; Pattern pattern = Pattern.compile("联系人:(\\w+),电话:(\\d+)"); Matcher matcher = pattern.matcher(text); if (matcher.find()) { System.out.println("姓名: " + matcher.group(1)); // 第一个分组 System.out.println("电话: " + matcher.group(2)); // 第二个分组 }注意:group(0) 表示整个匹配结果,group(1) 开始为第一个括号内的内容。
基本上就这些。掌握 Pattern 和 Matcher 后,你可以处理大多数文本分析任务,比如验证邮箱、提取日志信息、替换敏感词等。关键是理解正则语法和匹配方法的区别,合理选择 find、matches 或 lookingAt。不复杂但容易忽略细节,建议多写测试用例验证逻辑。