Java正则表达式实例详解:实战应用

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Java正则表达式:带代码示例的完整指南



正则表达式(regex)是一种强大的工具,用于按模式搜索、提取和替换文本。在Java中,正则表达式的处理通过两个主要类实现:java.util.regex.Pattern(模式编译)和java.util.regex.Matcher(执行搜索)。本文将讲解语法、主要方法,并通过实战示例帮助您在真实项目中自信地使用正则表达式。



1. Java正则表达式基础

在进入示例之前,我们先了解关键类及其交互方式。



Pattern类

Pattern是正则表达式的编译表示。它通过静态方法Pattern.compile()创建。未经编译无法使用正则表达式。



Matcher类

Matcher是“引擎”,负责在字符串中按指定模式执行搜索。通过pattern.matcher(inputString)方法创建。



元字符基本语法

  • . — 任意字符(除换行符外)
  • \\d — 数字(0-9)
  • \\w — 字母、数字或下划线
  • \\s — 空白字符
  • ^ — 字符串开头
  • $ — 字符串结尾
  • * — 0次或多次重复
  • + — 1次或多次重复
  • ? — 0次或1次重复
  • {n,m} — 重复n到m次
  • [] — 字符集(例如[a-z]表示任意小写字母)
  • () — 捕获组


示例1:简单电话号码验证

import java.util.regex.*;

public class PhoneValidator { public static void main(String[] args) { String phone = "+7 (999) 123-45-67"; String regex = "^\\\\+7\\\\s\\\\(\\\\d{3}\\\\)\\\\s\\\\d{3}-\\\\d{2}-\\\\d{2}$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(phone); if (matcher.matches()) { System.out.println("号码格式正确"); } else { System.out.println("号码格式不正确"); } }}


2. Matcher方法:matches()、find()与捕获组

理解matches()和find()的区别是成功使用Java正则表达式的关键。



  • matches() — 检查整个字符串是否完全匹配模式(隐式添加^和$)。
  • find() — 在字符串任意位置搜索匹配模式的子串。
  • group() — 返回匹配结果或捕获组的值。


示例2:使用find()和捕获组从文本中提取邮箱地址

import java.util.regex.*;

public class EmailExtractor { public static void main(String[] args) { String text = "联系方式:support@example.com, info@test.org 和 admin@site.net。"; String regex = "([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\\\\.([a-zA-Z]{2,})"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); while (matcher.find()) { System.out.println("完整邮箱:" + matcher.group()); System.out.println("用户名:" + matcher.group(1)); System.out.println("域名:" + matcher.group(2)); System.out.println("顶级域:" + matcher.group(3)); System.out.println("---"); } }}


示例3:使用matches()验证密码

要求:8到20个字符,至少一个大写字母,至

博客

书籍推荐