Java正则表达式示例:完整指南

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

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

开始课程

Java中的正则表达式:从基础到高级应用



正则表达式(regex)是一种强大的文本处理工具,能够通过复杂模式执行字符串的搜索、替换和验证。Java通过java.util.regex包支持正则表达式,该包提供了两个主要类:Pattern(编译模式)和Matcher(执行搜索/替换操作)。



本文将讲解如何在Java中高效使用正则表达式,从基本语法开始,到实际开发中的真实案例。



1. Java正则表达式基础语法



在进入Java代码之前,掌握正则表达式的基本元字符很重要:



  • . — 任意单个字符(除换行符外)
  • \\d — 任意数字(0-9)
  • \\w — 字母、数字或下划线
  • \\s — 空白字符(空格、制表符、换行符)
  • * — 前一个字符出现0次或多次
  • + — 前一个字符出现1次或多次
  • ? — 前一个字符出现0次或1次(使字符可选)
  • ^ — 字符串开头
  • $ — 字符串结尾
  • [...] — 字符类(例如[a-z] — 所有小写字母)
  • (...) — 捕获组


重要提示:在Java中,包含正则表达式的字符串需要双重转义。例如,要使用\\d,在代码中需写成"\\\\d"。这是因为反斜杠首先由Java编译器处理,然后才传递给regex引擎。



2. Pattern和Matcher类——Java中regex操作的基础



Java中正则表达式的基本工作流程包含三个步骤:



  1. 通过编译模式字符串创建Pattern对象
  2. 在需要检查的字符串上调用matcher()方法创建Matcher对象
  3. 执行操作——搜索、匹配、替换


示例1:检查整个字符串是否匹配



import java.util.regex.Pattern;import java.util.regex.Matcher;

public class RegexExample { public static void main(String[] args) { // 检查字符串是否为有效的电子邮件地址 String email = "user@example.com"; String emailPattern = "^[A-Za-z0-9+_.-]+@(.+)$"; Pattern pattern = Pattern.compile(emailPattern); Matcher matcher = pattern.matcher(email); if (matcher.matches()) { System.out.println("Email有效"); } else { System.out.println("Email无效"); } }}


matches()方法尝试将模式与整个字符串进行匹配。如果需要检查字符串是否包含与模式匹配的内容(不一定是完全匹配),则使用find()方法。



示例2:查找字符串中所有匹配的模式



import java.util.regex.Pattern;import java.util.regex.Matcher;

public class FindExample { public static void main(String[] args) { String text = "Java 8, Java 11, Java 17 — 这些是Java语言的版本"; String regex = "Java\\\\s+\\\\d+"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); while (matcher.find()) { System.out.println("找到: " + matcher.group() + " (位置: " + matcher.start() + "-" + matcher.end() + ")"); } }}


执行结果:

找到: Java 8 (位置: 0-6)找到: Java 11 (位置: 8-15

博客

书籍推荐