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

文章目录

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

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

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


1️⃣Pattern.quote(String s)

publicstaticStringquote(Strings)
  • 功能:将输入字符串s转换为字面量匹配的正则表达式
  • 特点:输入中的元字符(如.,*,?等)会被当作普通字符处理,不再具有特殊含义
示例:
importjava.util.regex.Pattern;publicclassQuoteDemo{publicstaticvoidmain(String[]args){Stringinput="a.b*c?";Stringregex=Pattern.quote(input);// 将特殊字符转义booleanmatch=Pattern.matches(regex,"a.b*c?");System.out.println(match);// 输出 true}}

💡 说明:

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

2️⃣Pattern.toString()

publicStringtoString()
  • 功能:返回编译正则表达式的字符串形式
  • 用途:方便调试,查看当前Pattern对象对应的正则表达式
示例:
Patternp=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()

Stringstr="12345";booleanmatch=str.matches("\\d+");// 判断是否全部是数字System.out.println(match);// 输出 true

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


示例 2:String.split()

Stringstr="one:two:three";String[]parts=str.split(":");for(Strings:parts){System.out.println(s);}

输出:

one two three

示例 3:String.replace()

Stringstr="aaa";Stringresult=str.replace("aa","b");System.out.println(result);// 输出 ba

💡 说明:

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

🔹 小结

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

✅ 建议:

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