Hutool Hutool
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(hutool-core)

    • AI(Hutool-ai)

    • 注解(annotation)

    • 数组(array)

    • JavaBean(bean)

    • 缓存(cache)

    • 类加载器(classloader)

    • 编码解码(codec)

    • 集合(collection)

    • 比较器(comparator)

    • 压缩(compress)

    • 类型转换(convert)

    • 数据(data)

    • 日期时间(date)

    • 异常(exception)

    • 函数(func)

    • IO流(io)

    • 语言特性(lang)

    • Map(map)

    • 数字数学(math)

    • 网络(net)

    • 对象池(pool)

    • 反射(reflect)

    • 正则(regex)

      • 正则表达式
        • 模块概述
        • JDK正则表达式对比
          • JDK正则表达式的不足
          • Hutool正则表达式模块的优势
        • 核心类结构
        • 模块使用场景
        • 快速开始
          • 正则匹配
          • 正则查找
          • 正则替换
          • 正则提取
          • 正则分割
          • 常用正则
        • 总结
      • ReUtil
      • RegexPool 正则表达式池
    • 服务提供(spi)

    • 聚合操作(stream)

    • 字符串文本(text)

    • 并发和线程(thread)

    • 树结构(tree)

    • 工具集合(util)

    • XML操作(xml)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 核心(hutool-core)
  • 正则(regex)
Hutool
2026-01-03
目录

正则表达式

正则表达式模块是Hutool的核心模块之一,提供了丰富的正则表达式操作功能,简化了Java正则表达式的使用,使正则操作更加便捷高效。

# 模块概述

正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分割文本。Java内置了java.util.regex包来支持正则表达式,但使用起来相对复杂,需要编写大量的代码。

Hutool的正则表达式模块对Java原生正则表达式API进行了封装,提供了简洁易用的API,涵盖了以下功能:

  • 正则匹配:判断字符串是否匹配指定的正则表达式
  • 正则查找:查找字符串中匹配正则表达式的部分
  • 正则替换:替换字符串中匹配正则表达式的部分
  • 正则分割:使用正则表达式分割字符串
  • 正则提取:提取字符串中匹配正则表达式的分组
  • 正则缓存:内置正则表达式缓存机制,提高性能
  • 常用正则:内置了大量常用正则表达式

# JDK正则表达式对比

# JDK正则表达式的不足

  1. API复杂:Java原生正则表达式API设计较为复杂,需要编写大量的代码
  2. 缺少常用正则:没有提供常用正则表达式的预定义
  3. 匹配结果处理繁琐:获取匹配结果需要多次调用Matcher的方法
  4. 性能开销:每次使用正则表达式都需要编译,性能开销较大
  5. 分组操作复杂:提取分组需要手动处理
  6. 异常处理繁琐:需要处理多种异常

# Hutool正则表达式模块的优势

  1. API简洁:提供了简洁易用的API,一个方法即可完成复杂的正则操作
  2. 常用正则内置:内置了大量常用正则表达式,如邮箱、手机号、URL等
  3. 匹配结果处理便捷:提供了便捷的方法来处理匹配结果
  4. 性能优化:内置正则表达式缓存机制,提高性能
  5. 分组操作便捷:提供了便捷的方法来提取分组
  6. 异常处理简化:将checked异常转换为runtime异常,避免繁琐的try-catch
  7. 功能丰富:提供了丰富的正则操作功能,满足各种需求

# 核心类结构

类名 主要功能
ReUtil 正则表达式工具类,提供了正则匹配、查找、替换、分割等功能
PatternPool 正则表达式模式池,用于缓存编译后的正则表达式
RegexPool 正则表达式池,提供了常用正则表达式的预定义

# 模块使用场景

正则表达式模块适用于以下场景:

  1. 文本验证:验证邮箱、手机号、URL等格式是否正确
  2. 文本提取:从文本中提取指定格式的内容
  3. 文本替换:替换文本中指定格式的内容
  4. 文本分割:使用正则表达式分割文本
  5. 日志分析:分析日志文件,提取关键信息
  6. 数据清洗:清洗数据,去除不符合要求的内容
  7. 网络爬虫:从网页中提取指定信息

# 快速开始

# 正则匹配

// 验证邮箱格式
boolean isEmail = ReUtil.isMatch("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$", "test@example.com");
// 输出: true

// 验证手机号格式
boolean isPhone = ReUtil.isMatch("^1[3-9]\\d{9}$", "13812345678");
// 输出: true

# 正则查找

// 查找字符串中的数字
String text = "abc123def456ghi789";
String result = ReUtil.get("\\d+", text, 0);
// 输出: 123

// 查找所有匹配的数字
List<String> results = ReUtil.findAllGroup0("\\d+", text);
// 输出: ["123", "456", "789"]

# 正则替换

// 替换字符串中的数字为"*"
String text = "abc123def456ghi789";
String result = ReUtil.replaceAll("\\d+", text, "*");
// 输出: abc*def*ghi*

// 替换字符串中的数字为其平方
String result2 = ReUtil.replaceAll("\\d+", text, matcher -> {
    int num = Integer.parseInt(matcher.group());
    return String.valueOf(num * num);
});
// 输出: abc15129def207936ghi622521

# 正则提取

// 提取URL中的域名
String url = "https://www.baidu.com/s?wd=hutool";
String domain = ReUtil.getGroup1("https?://([\\w.-]+)/", url);
// 输出: www.baidu.com

// 提取分组
String text = "name:张三,age:25";
String name = ReUtil.getGroup1("name:(\\w+),age:(\\d+)", text);
String age = ReUtil.getGroup2("name:(\\w+),age:(\\d+)", text);
// 输出: name=张三, age=25

# 正则分割

// 使用空格分割字符串
String text = "Hello   World  Hutool";
String[] parts = ReUtil.split("\\s+", text);
// 输出: ["Hello", "World", "Hutool"]

# 常用正则

// 使用内置的邮箱正则
boolean isEmail = ReUtil.isMatch(RegexPool.EMAIL, "test@example.com");
// 输出: true

// 使用内置的手机号正则
boolean isPhone = ReUtil.isMatch(RegexPool.MOBILE, "13812345678");
// 输出: true

// 使用内置的URL正则
boolean isUrl = ReUtil.isMatch(RegexPool.URL, "https://www.baidu.com");
// 输出: true

# 总结

正则表达式模块是Hutool的核心模块之一,提供了丰富的正则表达式操作功能,简化了Java正则表达式的使用。通过使用正则表达式模块,可以大大减少正则操作的代码量,提高开发效率。

无论是文本验证、文本提取、文本替换还是文本分割,正则表达式模块都能提供简洁高效的解决方案。其内置的常用正则表达式和缓存机制也提高了开发效率和性能。

接下来,我们将详细介绍正则表达式模块中的核心工具类ReUtil,帮助大家更好地理解和使用这些工具类。

类描述工具-ClassDescUtil
ReUtil

← 类描述工具-ClassDescUtil ReUtil→

Theme by Vdoing | Copyright © 2025-2026 Hutool | Apache-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式