449. Java 正则表达式 - 其他实用方法

文章目录

  • [449. Java 正则表达式 - 其他实用方法](#449. Java 正则表达式 - 其他实用方法)
    • [1️⃣ `Pattern.quote(String s)`](#1️⃣ Pattern.quote(String s))
    • [2️⃣ `Pattern.toString()`](#2️⃣ Pattern.toString())
    • [3️⃣ `String` 类中的正则方法](#3️⃣ String 类中的正则方法)
      • [示例 1:`String.matches()`](#示例 1:String.matches())
      • [示例 2:`String.split()`](#示例 2:String.split())
      • [示例 3:`String.replace()`](#示例 3:String.replace())
    • [🔹 小结](#🔹 小结)

449. Java 正则表达式 - 其他实用方法

除了 PatternMatcher 的常用方法,Java 提供了一些 辅助方法和 String 里的正则方法,可以让正则操作更方便。


1️⃣ Pattern.quote(String s)

java 复制代码
public static String quote(String s)
  • 功能:将输入字符串 s 转换为 字面量匹配的正则表达式
  • 特点:输入中的 元字符 (如 ., *, ? 等)会被当作普通字符处理,不再具有特殊含义
示例:
java 复制代码
import java.util.regex.Pattern;

public class QuoteDemo {
    public static void main(String[] args) {
        String input = "a.b*c?";
        String regex = Pattern.quote(input);  // 将特殊字符转义
        boolean match = Pattern.matches(regex, "a.b*c?");
        System.out.println(match);  // 输出 true
    }
}

💡 说明:

  • 如果直接用 "a.b*c?" 作为正则,会匹配 任意一个字符 + b + 任意次数的 c + 可选 ?
  • 使用 Pattern.quote() 后,匹配严格 完全等于字符串本身

2️⃣ Pattern.toString()

java 复制代码
public String toString()
  • 功能:返回 编译正则表达式的字符串形式
  • 用途:方便调试,查看当前 Pattern 对象对应的正则表达式
示例:
java 复制代码
Pattern p = Pattern.compile("\\d{3}-\\d{2}-\\d{4}");
System.out.println(p.toString());  // 输出 \d{3}-\d{2}-\d{4}

3️⃣ String 类中的正则方法

Java 的 java.lang.String 也提供了几个 Pattern 等效的方法,让你直接对字符串操作正则:

方法 功能 等效 Pattern 方法
boolean matches(String regex) 判断字符串是否 完全匹配 正则 Pattern.matches(regex, str)
String[] split(String regex) 按正则分割字符串,去掉尾部空字符串 Pattern.compile(regex).split(str)
String[] split(String regex, int limit) 按正则分割字符串,限制拆分次数 Pattern.compile(regex).split(str, limit)
String replace(CharSequence target, CharSequence replacement) 替换 字面量 子串 不是正则,只替换字符串字面量

示例 1:String.matches()

java 复制代码
String str = "12345";
boolean match = str.matches("\\d+");  // 判断是否全部是数字
System.out.println(match);  // 输出 true

✅ 注意:matches() 要求 整个字符串匹配,不是部分匹配。


示例 2:String.split()

java 复制代码
String str = "one:two:three";
String[] parts = str.split(":");
for (String s : parts) {
    System.out.println(s);
}

输出:

java 复制代码
one
two
three

示例 3:String.replace()

java 复制代码
String str = "aaa";
String result = str.replace("aa", "b");
System.out.println(result);  // 输出 ba

💡 说明:

  • 替换 从左到右
  • 字面量替换,不会把 "aa" 重叠部分当成两次匹配

🔹 小结

  • Pattern.quote():把字符串转成 字面量正则
  • Pattern.toString():查看当前正则表达式
  • String 类方法:方便快捷,适合简单匹配、拆分或替换

✅ 建议:

  • 复杂正则 → 用 PatternMatcher
  • 简单匹配/拆分/替换 → 用 String 自带方法